home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d11 / frain14r.arc / FRACTINT.DOC < prev    next >
Text File  |  1990-08-12  |  241KB  |  5,429 lines

  1.  
  2.                           Fractint Version 14.0
  3.   CONTENTS
  4.  
  5.   New Features in Version 14.0
  6.  
  7.   Introduction
  8.  
  9.   1. Quick Start: FRACTINT Commands
  10.       Plotting
  11.       Colors
  12.       Saving, Restoring and Printing
  13.       "3D"
  14.       Interrupting and Resuming
  15.       More Zoom Box Commands
  16.       Hints
  17.  
  18.   2. Fractal Types
  19.        Mandelbrot
  20.        Julia
  21.        Newton's Formula
  22.        Lambda
  23.        MandelLambda
  24.        Plasma Clouds
  25.        LambdaFn
  26.        MandelFn
  27.        Barnsley Mandelbrot/Julia
  28.        Barnsley IFS
  29.        Sierpinski Gasket
  30.        Quartic Mandelbrot/Julia
  31.        Distance Estimator Mandelbrot/Julia
  32.        Pickover Mandelbrot/Julia Types
  33.        Peterson Variations
  34.        Unity
  35.        Scott Taylor /Lee Skinner Variations
  36.        KAM Torus, KAM Torus 3D
  37.        Bifurcation, Biflambda, Bif+sinpi, Bif=sinpi
  38.        Lorenz, Lorenz3d
  39.        Rossler
  40.        Henon
  41.        Pickover
  42.        Gingerbreadman
  43.        Test Stub
  44.        Formula
  45.        Julibrots
  46.        Diffusion
  47.        Magnet1m, Magnet1j, Magnet2m, Magnet2j
  48.  
  49.       Doodads, Bells and Whistles
  50.        "3D" Images
  51.        Distance Estimator Method
  52.        Inversion
  53.        Decomposition
  54.        Starmaps
  55.        Logarithmic Palettes
  56.        Pickover Biomorphs and Popcorn
  57.  
  58.  
  59.                                        1
  60.  
  61.  
  62.   3. Command-Line Arguments, Batch Mode, and SSTOOLS.INI
  63.  
  64.   4. File Formats, Colors, and All That
  65.       .FRA and .GIF Files
  66.       Continuous Potential
  67.       Palette Maps
  68.  
  69.   5. Hardware Support
  70.       Notes on Modes, "Standard" and Otherwise
  71.       FRACTINT.CFG
  72.  
  73.   6. Fractals and the PC
  74.       A Little History
  75.        B.M. (Before Mandelbrot)
  76.        Who Is This Guy, Anyway?
  77.       A Little Code
  78.        Logic Speed-ups
  79.        The Limitations of Integer Math
  80.        The Fractint "Fractal Engine" Architecture
  81.  
  82.   Appendix A: Mathematics of the Fractal Types
  83.   Appendix B: Stone Soup with Pixels
  84.   Appendix C: Revision History
  85.   Appendix D: Bibliography
  86.   Appendix E: Other Recommended Fractal Programs
  87.   Appendix F: Version 13 to Version 14 Type Mapping
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.                                        2
  119.  
  120.   NEW FEATURES IN VERSION 14.0
  121.  
  122.   LAST MINUTE NEWS FLASH!
  123.     Compuserve announces the GIF89a on August 1, 1990, and FRACTINT
  124.     supports it on August 2! GIF files can now contain fractal
  125.     information!  FRACTINT now saves its files in the new GIF89a format
  126.     by default, and uses .GIF rather than .FRA as a default filetype.
  127.     Note that FRACTINT still *looks* for a .FRA file on file restores
  128.     if it can't find a .GIF file, and can be coerced into using the old
  129.     GIF87a format with the new 'gif87a=yes' command-line option.  
  130.  
  131.   Pieter Branderhorst mounted a major campaign to get his name in lights:
  132.   Mouse interface:  Diagonals, faster movement, improved feel.
  133.     Mouse button assignments have changed - see the online help.
  134.   Zoom box enhancements:  The zoom box can be rotated, stretched, skewed,
  135.     and panned partially offscreen.  See "More Zoom Box Commands".
  136.   FINALLY!! You asked for it and we (eventually, by talking Pieter into
  137.     it [actually he grabbed it]) did it!  Images can be saved before
  138.     completion, for a subsequent restore and continue.  See "Interrupting
  139.     and Resuming" and "Batch Mode".
  140.   Off-center symmetry:  Fractint now takes advantage of x or y axis
  141.     symmetry anywhere on the screen to reduce drawing time.
  142.   Panning:  If you move an image up, down, left, or right, and don't
  143.     change anything else, only the new edges are calculated.
  144.   Disk-video caching - it is now possible, reasonable even, to do most
  145.     things with disk video, including solid guessing, 3d, and plasma.
  146.   Logarithmic palette changed to use all colors.  It now matches regular
  147.      palette except near the "lake".  "logmap=old" gets the old way.
  148.   New "savetime=nnn" parameter to save checkpoints during long calculations.
  149.       Calculation time is shown in <Tab> display.
  150.  
  151.   Kevin Allen, of Antipodean origin, did the following:
  152.   Made Bifurcation/Verhulst into a generalised Fractal Engine (like
  153.       StandardFractal, but for Bifurcation types), and implemented
  154.       periodicity checking for Bifurcation types to speed them up.
  155.   Added Integer version of Verhulst Bifurcation (lots faster now).
  156.       Integer is the default.  The Floating-Point toggle works, too.
  157.   Added NEW Fractal types BIFLAMBDA, BIF+SINPI, and BIF=SINPI.
  158.       These are Bifurcation types that make use of the new Engine.
  159.       Floating-point/Integer toggle is available for BIFLAMBDA.
  160.       The SINPI types are Floating-Point only, at this time.
  161.   Corrected the generation of the MandelLambda Set.  Sorry, but it's
  162.       always been wrong (up to v 12, at least).  Ask Mandelbrot !
  163.   Added NEW Fractal types MAGNET1M, MAGNET1J, MAGNET2M, MAGNET2J from
  164.       "The Beauty of Fractals".  Floating-Point only, so far, but
  165.       what do you expect with THESE formulae ?!
  166.   Added new symmetry types XAXIS NOIMAG and XAXIS NOREAL, required by
  167.       the new MAGNETic Fractal types.
  168.   Added Finite Attractor Bailout (FAB) logic to detect when
  169.       iterations are approaching a known finite attractor. This is
  170.       required by the new MAGNETic Fractal types.
  171.   Added Finite Attractor Detection (FAD) logic which can be used by
  172.       *SOME* Julia types prior to generating an image, to test for
  173.       finite attractors, and find their values, for use by FAB logic.
  174.       Can be used by the new MAGNETic Fractal Types, Lambda Sets, and
  175.       some other other Julia types too.
  176.  
  177.                                        3
  178.  
  179.   Mike Burkey sent us new tweaked video modes:
  180.     VGA     - 400x600x256   376x564x256   400x564x256
  181.     ATI VGA - 832x612x256
  182.  
  183.   New HP Paintjet support from Chris Martin
  184.   New "FUNCTION=" command to allow substition of different transcendental
  185.      functions for variables in types (allows one type with four of these
  186.      variables to represent 7*7*7*7 different types!
  187.  
  188.   ALL KINDS of new fractal types, some using "FUNCTION=": fn(z*z), fn*fn,
  189.      fn*z+z, fn+fn, sqr(1/fn), sqr(fn), spider, tetrate, and Manowar. Most
  190.      of these are generalizations of formula fractal types contributed by
  191.      Scott Taylor and Lee Skinner.
  192.   Distance Estimator logic can now be applied to many fractal types using
  193.     distest= option. The types "demm" and "demj" have been replaced by
  194.     "type=mandel distest=nnn" and "type=julia distest=nnn"
  195.   Added extended memory support for diskvideo thanks to Paul Varner
  196.   Added support for "center and magnification" format for corners.
  197.   Color 0 is no longer generated except when specifically requested with
  198.     inside= or outside=.
  199.   Formula name is now included in <Tab> display and in <S>aved images.
  200.   Bug fixes - formula type and diskvideo, batch file outside=-1 problem
  201.   Now you can produce your favorite fractal terrains in full color instead of
  202.      boring old monochrome! Use the fullcolor option in 3d! Along with a
  203.      few new 3D options.
  204.   New "INITORBIT=" command to allow alternate Mandelbrot set orbit
  205.      initialization.
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.                                        4
  237.  
  238.   INTRODUCTION
  239.  
  240.   FRACTINT plots and manipulates images of "objects" -- actually, sets of
  241.   mathematical points -- that have fractal dimension. See chapter 6 for
  242.   some historical and mathematical background on fractal geometry, a
  243.   discipline named and popularized by mathematician Benoit Mandelbrot.
  244.   For now, these sets of points have three important properties:
  245.  
  246.   1) They are generated by relatively simple calculations repeated over
  247.   and over, feeding the results of each step back into the next --
  248.   something computers can do very rapidly.
  249.  
  250.   2) They are, quite literally, infinitely complex: they reveal more and
  251.   more detail without limit as you plot smaller and smaller areas.
  252.   FRACTINT lets you "zoom in" by positioning a small box and hitting
  253.   <Enter> to redraw the boxed area at full-screen size; its maximum
  254.   linear "magnification" is over a trillionfold.
  255.  
  256.   3) They can be astonishingly beautiful, especially using PC color
  257.   displays' ability to assign colors to selected points, and (with VGA
  258.   displays or EGA in 640x350x16 mode) to "animate" the images by quickly
  259.   shifting those color assignments.
  260.  
  261.   The name FRACTINT was chosen because the program generates many of its
  262.   images using INTeger math, rather than the floating-point calculations
  263.   used by most such programs. That means that you don't need a math co-
  264.   processor chip (aka floating-point unit or FPU), although for a few
  265.   fractal types where floating-point math is faster, the program recog-
  266.   nizes and automatically uses an 80x87 chip if it's present. It's even
  267.   faster on systems using Intel's 80386 and 80486 microprocessors, where
  268.   the integer math can be executed in their native 32-bit mode.
  269.  
  270.   FRACTINT works with many adapters and graphics modes from CGA to the
  271.   1024x768, 256-color 8514/A mode. Even "larger" images, up to
  272.   2048x2048x256, can be plotted to expanded memory, extended memory, or
  273.   disk: this bypasses the screen and allows you to create images with
  274.   higher resolution than your current display can handle, and to run in
  275.   "background" under multi-tasking control programs such as DESQview and
  276.   Windows 3.
  277.  
  278.   FRACTINT is an experiment in collaboration. Many volunteers have joined
  279.   Bert Tyler, the program's first author, in improving successive ver-
  280.   sions. Through electronic-mail messages, first on CompuServe's PICS forum
  281.   and now on COMART, new versions are hacked out and debugged a little
  282.   at a time. FRACTINT was born fast, and none of us has seen any other
  283.   fractal plotter close to the present version for speed, versatility, and
  284.   all-around wonderfulness. (If you have, tell us so we can steal somebody
  285.   else's ideas instead of each other's.) See Appendix B for information
  286.   about the authors and how to contribute your own ideas and code.
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.                                        5
  296.  
  297.   The executable FRACTINT.EXE is public domain, and we encourage you to
  298.   share copies and upload it to bulletin-board systems. Except for those
  299.   modules marked with a copyright notice (and subject to the authors'
  300.   conditions in the notices), the source code is also public domain.
  301.   There is no warranty of its suitability for any purpose, nor any
  302.   acceptance of liability, express or implied.
  303.  
  304.   Contribution policy: Don't want money. Got money. Want admiration.
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                                        6
  355.  
  356.   1. QUICK START: FRACTINT Commands
  357.  
  358.   To start the program, enter FRACTINT at the DOS prompt. The program
  359.   displays an initial "credits" screen, and waits for you to hit a
  360.   command key that will (1) start plotting in a specific video mode or
  361.   (2) set one of many options. You can also (at this screen or at any
  362.   time) press the HELP key (F1) for screens describing the commands and
  363.   video modes. As soon as you select a video mode, the program begins
  364.   drawing an initial display -- the "full" Mandelbrot set, if you haven't
  365.   selected another fractal type. From this point on, and AT ANY TIME, you
  366.   can hit any of the following keys to select a function. (For the
  367.   "typewriter" keys, upper and lower case are equivalent: <B> and <b>,
  368.   have the same result.)
  369.  
  370.   Many commands and parameters can be passed to FRACTINT.EXE as command-
  371.   line arguments or read from a configuration file; see Sec. 3 for
  372.   details.
  373.  
  374.                         Plotting Commands
  375.  
  376.   <F1>
  377.   Bring up a help screen. The Escape key brings you back.
  378.  
  379.   Function keys & various combinations (see help screens) are used to
  380.   select a video mode and redraw the screen.  For a quick start, try one
  381.   of the following:
  382.     If you have MCGA, VGA, or better:  <F3>
  383.     If you have EGA:                   <F9>
  384.     If you have CGA:                   <F5>
  385.     Otherwise, monochrome:             <F6>
  386.   Remember to look through the help screens later for additional modes.
  387.  
  388.   <Page Up>
  389.   Display and shrink the zoom box ("zoom in"). The LEFT button of a mouse
  390.   displays the box; push the mouse away from you while holding that
  391.   button down to shrink the box.
  392.  
  393.   <Page Down>
  394.   Display and expand the zoom box ("zoom out"). Pulling the mouse towards
  395.   you with the left button down has the same effect.
  396.  
  397.   Cursor ("arrow") keys
  398.   Move ("pan") the zoom box. Moving the mouse has the same effect. With
  399.   an enhanced-keyboard BIOS, <Ctrl> plus a cursor key moves the box 5
  400.   times faster.
  401.  
  402.   <Enter> ("Return") or <End>
  403.   Redraw the area inside the zoom box as a full-screen image. Or double
  404.   click the left mouse button.  If there's no zoom box on the screen,
  405.   and the current image is incomplete (e.g. if you interrupted it to adjust
  406.   the colors) <Enter> resumes calculating the image.  If the image was
  407.   complete or you've changed some options, <Enter> clears the screen and
  408.   redraws.
  409.  
  410.  
  411.  
  412.  
  413.                                        7
  414.  
  415.   <Ctrl><Enter>
  416.   "Zoom out," so that your screen would fill the current zoom box, and
  417.   redraw.  Or double click the right mouse button.
  418.  
  419.   <Esc> or <Delete>
  420.   Exit FRACTINT and return to DOS.
  421.  
  422.   <Home>
  423.   Redraw the previous image. The program tracks 25 sets of coordinates.
  424.  
  425.   <Tab>
  426.   Display the current fractal type, parameters, screen or (if displayed)
  427.   zoom-box coordinates, maximum iteration count, and other information
  428.   useful in keeping track of where you are.  The Tab function is
  429.   non-destructive - if you press it while in the midst of generating an
  430.   image, you will continue generating it when you return.  The Tab
  431.   function tells you if your image is still being generated or has
  432.   finished - a handy feature for those overnight, 1024x768 resolution
  433.   fractal images.  If the image is incomplete, it now also tells you
  434.   whether it can be interrupted and resumed.
  435.  
  436.   <T>
  437.   Select a fractal type. Move the cursor to your choice and hit <Enter>.
  438.   You will be prompted for any parameters that type may require.
  439.  
  440.   <X>
  441.   Select any number of eXtended options. Brings up a full-screen menu of
  442.   options, any number of which you can change at will.  This list currently
  443.   includes the F(loating point algorithm) toggle, the image generation
  444.   algorithm (passes = 1, 2, solid-guessing, or boundary tracing), the
  445.   "maxiter=" iteration maximum, the "inside=" and "outside=" colors, the
  446.   Logarithmic Palettes option, the Biomorph and Decomposition
  447.   algorithms, the "sound=" option, "warn=" option, "bailout=" value, the
  448.   "distest=" value, and the "potential=" parameters.
  449.  
  450.   <1>, <2>, or <G>
  451.   Select single-pass, dual-pass, or solid-guessing (default) mode, then
  452.   redraw the screen. Single-pass mode draws the screen pixel by pixel.
  453.   Dual-pass generates a "coarse" screen first as a preview using 2x2-
  454.   pixel boxes, and then generates the rest of the dots with a second
  455.   pass. Solid-guessing performs from two to four visible passes - more
  456.   passes in higher resolution video modes. Its first visible pass is
  457.   actually two passes - one pixel per 4x4, 8x8, or 16x16 pixel box
  458.   (depending on number of passes) is generated, and the guessing logic
  459.   is applied to fill in the blocks at the next level (2x2, 4x4, or 8x8).
  460.   Subsequent passes fill in the display at the next finer resolution,
  461.   skipping blocks which are surrounded by the same color. Solid-guessing
  462.   can guess wrong, but it sure guesses quickly!  Note: these options,
  463.   along with the Boundary-Tracing alternative, can now also be selected
  464.   using the "X" options screen.  Boundary Tracing, which only works
  465.   with fractal types (such as the Mandelbrot set, but not the Newton
  466.   type) that do not contain "islands" of colors, finds a color "boundary",
  467.   traces it around the screen, and then "blits" in the color over the
  468.   enclosed area.
  469.  
  470.  
  471.  
  472.                                        8
  473.  
  474.   <Spacebar>
  475.   Toggle between Mandelbrot-set images and their corresponding Julia-set
  476.   images. Read the notes in Sec. 2 before trying this option if you want
  477.   to see anything interesting.
  478.  
  479.   <B>
  480.   Create a batch file, FRABATCH.BAT, that will start FRACTINT with the
  481.   command-line arguments needed to draw the current image. If
  482.   FRABATCH.BAT already exists, a new line is appended to it.
  483.  
  484.   < or >
  485.   Lower or raise the maximum iteration count (the number of times the
  486.   program carries out its basic calculation before assigning colors). See
  487.   Sec. 2.  (Note: the maximum iteration count can now also be selected
  488.   explicitly using the "X" options screen.)
  489.  
  490.   <F>
  491.   Toggles the use of floating-point algorithms. Their use is shown on the
  492.   <Tab> status screen.   (Note: the floating point algorithms option can
  493.   now also be turned on and off using the "X" options screen.)
  494.  
  495.   <E>
  496.   Call up an editor that modifies, saves and restores various parameters.
  497.   Currently you can change the coefficients used in plotting the Barnsley
  498.   IFS fractal types or the 3D transformations used with the "Lorenz3D"
  499.   and "IFS3D" fractal types, including the selection of "funny glasses"
  500.   red/blue 3D.
  501.  
  502.   <I>
  503.   Apply the inversion process (Sec. 3) and redraw the screen. Not appli-
  504.   cable to all fractal types.
  505.  
  506.   <N> or <L>
  507.   Select normal (the default) or logarithmic palette mapping and redraw
  508.   the screen. (See Sec. 3 for details.)   (Note: the Logarithmic palette
  509.   option can now also be turned on and off using the "X" options screen.)
  510.  
  511.   <Q>
  512.   Apply the quaternary or binary decomposition coloring scheme (see Sec.
  513.   3) and redraw the screen. Not applicable to all fractal types.
  514.   (Note that the decomposition scheme can now select 8, 16, 32, 64, 128,
  515.   and 256-way decomposition, but we're stuck with <Q> for Quaternary.)
  516.   (Note: the Decomposition option can now also be turned on and off
  517.   using the "X" options screen.)
  518.  
  519.   <O> (the letter, not the number)
  520.   If pressed while an image is being generated, toggle the display of
  521.   intermediate results -- the "orbits" FRACTINT uses as it calculates values
  522.   for each point. Slows the display a bit, but shows you how clever the
  523.   program is being behind the scenes. (See "A Little Code" in Sec. 6.)
  524.  
  525.   <Insert>
  526.   Restart at the "credits" screen
  527.  
  528.  
  529.  
  530.  
  531.                                        9
  532.  
  533.   <D>
  534.   Shell to DOS. Return to FRACTINT by entering "exit" at a DOS prompt.
  535.  
  536.  
  537.                          Color Commands
  538.  
  539.   The color-cycling commands are available ONLY for VGA adapters and EGA
  540.   adapters in 640x350x16 mode. Some keys have different functions specif-
  541.   ic to this mode.
  542.  
  543.   Note that the palette colors available on an EGA adapter (16 colors at
  544.   a time out of a palette of 64) are limited compared to those of VGA,
  545.   super-VGA, and MCGA (16 or 256 colors at a time out of a palette of
  546.   262,144). So color-cycling in general looks a LOT better in the latter
  547.   modes. Also, because of the EGA palette restrictions, some commands are
  548.   not available with EGA adapters.
  549.  
  550.   <+> or <->
  551.   Switch to color-command mode and begin cycling the palette by shifting
  552.   each color to the next "contour."
  553.  
  554.   <C>
  555.   Switch to color-command mode but do not start cycling. The normally
  556.   black "overscan" border of the screen changes to white as a reminder
  557.   that you are in this command mode.
  558.  
  559.   The rest of the color commands are available only when you've already
  560.   switched to color-command mode.
  561.  
  562.   <F1>
  563.   Bring up a HELP screen with commands specific to color command mode.
  564.   ESCAPE exits.
  565.  
  566.   <+> or cursor->, <-> or cursor<-
  567.   Reverse the cycling direction "out" or "in."
  568.  
  569.   Cursor up/down
  570.   Increase/decrease the cycling speed. High speeds may cause a harmless
  571.   flicker at the top of the screen.
  572.  
  573.   <F2> through <F10>
  574.   Switches from simple rotation to color selection using randomly-gener-
  575.   ated color bands of short (F2) to long (F10) duration.
  576.  
  577.   <1> through <9>
  578.   Causes the screen to be updated every 'n' color cycles (the default is
  579.   1). Handy for slower computers.
  580.  
  581.   <Enter>
  582.   Randomly selects a function key (F2 through F10) and then updates ALL
  583.   the screen colors prior to displaying them for instant, random colors.
  584.   Hit this over and over again (we do).
  585.  
  586.  
  587.  
  588.  
  589.  
  590.                                        10
  591.  
  592.   <Spacebar>
  593.   Pause cycling with white overscan area. Cycling restarts with any
  594.   command key (including another spacebar) -- or you can use any non-
  595.   command key to exit color-command mode so you can (S)ave the image.
  596.  
  597.   <Shift><F1>-<F10>
  598.   Pause cycling and reset the palette to a preset two-color "straight"
  599.   assignment, such as a spread from black to white. (Not for EGA)
  600.  
  601.   <Ctrl><F1>-<F10>
  602.   Pause and use a two-color cyclical assignment, e.g. red->yellow->red
  603.   (not for EGA).
  604.  
  605.   <Alt><F1>-<F10>
  606.   Pause and use a 3-color cyclical assignment, e.g. green->white->blue
  607.   (not for EGA).
  608.  
  609.   <R>, <G>, <B>
  610.   Pause and increase the red, green, or blue component of all colors by a
  611.   small amount (not for EGA). Note the case distinction of this vs:
  612.  
  613.   <r>, <g>, <b>
  614.   Pause and decrease the red, green, or blue component of all colors by a
  615.   small amount (not for EGA).
  616.  
  617.   <D> or <A>
  618.   Pause and load an external color map from the files DEFAULT.MAP or
  619.   ALTERN.MAP, supplied with the program.
  620.  
  621.   <M>
  622.   Pause and prompt for the filename of an external color map. Several
  623.   others are supplied with the program. (The .MAP extension is assumed;
  624.   see Sec. 4 for details on creating your own map files.)
  625.  
  626.   <S>
  627.   Pause, prompt for a filename, and save the current palette to the named
  628.   file (.MAP assumed).
  629.  
  630.   <X>
  631.   Enters the "Cross-Hair" Palette manipulation sub-mode, described below,
  632.   in which you can modify your image one color (palette) at a time
  633.   (not for EGA).
  634.  
  635.   Any other key terminates the color-cycling process (you can always
  636.   return to it with another <C>, <+> or <->) and returns to the main
  637.   command mode.
  638.  
  639.                Cross-Hair Mode (a Sub-Mode of Color-Cycling)
  640.  
  641.   This mode is entered from the main color-cycling mode by pressing the
  642.   "X" key, which brings up a "Cross-Hair" cursor with which you point
  643.   to a pixel using the particular color palette you wish to modify.
  644.   Unlike the main color-cycling level, where you are modifying all of the
  645.   colors at once, Cross-Hair mode modifies only one palette at a time.
  646.   This feature is currently available only on VGA adapters.
  647.  
  648.  
  649.                                        11
  650.  
  651.  
  652.   <Cursor ("arrow") Keys>
  653.   Move the cross-hair cursor around the screen.  The Control-Cursor keys
  654.   move the cursor around faster.  A mouse can also be used to move around.
  655.   The palette value of the pixel in the middle of your cross-hair cursor
  656.   is the palette value that you will be manipulating.
  657.  
  658.   <R>, <G>, <B>
  659.   Increase the red, green, or blue component of your palette color by a
  660.   small amount. Note the case distinction of this vs:
  661.  
  662.   <r>, <g>, <b>
  663.   Decrease the red, green, or blue component of your palette color by a
  664.   small amount.
  665.  
  666.   <+>, <->
  667.   Changes the RGB components of the palette you are pointing at to those
  668.   of the next higher (or lower, for the <-> key) palette value.  Useful for
  669.   "erasing" bands of color.
  670.  
  671.   <Ctrl><Insert>, <Ctrl><Delete>
  672.   Change the palette value of the cross-hair cursor to the next higher (or
  673.   lower) palette value.  A handy feature when the cross-hair cursor gets
  674.   "lost" in the background.  Holding down the right mouse button and moving
  675.   the mouse forward and backward has the same effect.
  676.  
  677.   <Enter>, <Ctrl><Enter>, <Page Up>, <Page Down>
  678.   <Ctrl><Page up>, <Ctrl><Page Down>, <Ctrl><Home>, <Ctrl><End>,
  679.   <Ctrl><Keypad->, <Ctrl><Keypad+>
  680.   Do nothing at all.  Added only to prevent you from accidentally exiting
  681.   cross-hair mode by pressing unassigned mouse buttons.
  682.  
  683.   Any other key terminates Cross-Hair sub-mode and returns to the main
  684.   Color-Cycling command mode.
  685.  
  686.  
  687.                         Save/Restore/Print Commands
  688.  
  689.   <S>
  690.   Save the screen contents to disk. Progress is marked by colored lines
  691.   moving down the screen's edges. The default filename is FRACT001.GIF;
  692.   multiple saves in a session are automatically incremented 002, 003... If
  693.   you have files left over from previous sessions and want the program to
  694.   keep incrementing rather than starting at 001 again and overwriting, see
  695.   Sec. 3 for the "WARN=yes" argument (or set it with the "X" option screen).
  696.  
  697.   <R>
  698.   Restore an image previously saved with <S>. You are prompted for the
  699.   filename, .GIF assumed.
  700.  
  701.   <P>
  702.   Print the current fractal image on your (Laserjet, Paintjet, or
  703.   Epson-compatible) printer. See Sec. 3 for how to let FRACTINT know
  704.   about your printer setup. "Disk video" modes can be used to generate
  705.   images for printing at higher resolutions than your screen supports.
  706.  
  707.  
  708.                                        12
  709.  
  710.                           "3D" Commands
  711.  
  712.   <3>
  713.   Restore a saved image as a 3D "landscape", translating its color
  714.   information into "height". You will be prompted for all KINDS of
  715.   options; see "3D Images" in Sec. 3 for details.
  716.  
  717.   <O>
  718.   Restore in 3D and overlay the result on the current screen. (This
  719.   only works when there's a completed on screen, so it can't be
  720.   confused with the <O>-for-orbits toggle that ONLY operates WHILE a
  721.   fractal is being generated.)
  722.  
  723.  
  724.                      Interrupting and Resuming
  725.  
  726.   Fractint command keys can be loosely grouped as:
  727.  
  728.     o Keys which suspend calculation of the current image (if one is
  729.       being calculated) and automatically resume after the function.
  730.       <Tab> (display status information) and <F1> (display help), are
  731.       the only keys in this group.
  732.  
  733.     o Keys which automatically trigger calculation of a new image.
  734.       Examples:  selecting a video mode (e.g. <F3>);  selecting a fractal
  735.       type using <T>;  changing the floating point toggle using <F>.
  736.  
  737.     o Keys which do something, then wait for you to indicate what to do
  738.       next.  Examples:  <C> to enter color command mode;  <PageUp> to
  739.       bring up a zoom box;  <S> to save an image.  After using a command
  740.       in this group, you can resume calculation of the interrupted image
  741.       with the <Enter> key.  Most but not all fractal types are resumable
  742.       in this fashion.  If you've changed any option which can result in
  743.       a different image, <Enter> will start a new image instead of
  744.       resuming.
  745.  
  746.   An image which is <S>aved before it completes can later be <R>estored
  747.   and then resumed by hitting <Enter>.
  748.  
  749.   When <Enter> is used to resume a slow fractal type, there may be a lag
  750.   while nothing visible happens.  This is because most cases of resume
  751.   re-start at the beginning of a screen line.  If unsure, you can check
  752.   whether calculation has resumed with the <Tab> key.
  753.  
  754.   The following fractal types cannot (currently) be resumed: plasma,
  755.   julibrot, any type with a continuous potential output file, and 3d
  756.   orbital types like lorenz3d.  To check whether resuming an image is
  757.   possible, use the <Tab> key while it is calculating.  It is resumable
  758.   unless there is a note under the fractal type saying it is not.
  759.  
  760.   The "Batch Mode" section discusses how to resume in batch mode.
  761.  
  762.   If you <R>estore a "formula" type fractal (described later) and want to
  763.   resume it, your "formulafile" must contain the required formula.
  764.  
  765.  
  766.  
  767.                                        13
  768.  
  769.  
  770.                        More Zoom Box commands
  771.  
  772.   In addition to resizing the zoom box and moving it around, you can do
  773.   some rather warped things with it. The general approach is always the
  774.   same: Frame an area, then <Enter> to expand what's in the frame to fill
  775.   the whole screen (zoom in); or <Ctrl><Enter> to shrink the current image
  776.   into the framed area (zoom out). With a mouse, double-click the left
  777.   button to zoom in, double click the right button to zoom out.
  778.  
  779.   <Page Up>, <Page Down>
  780.   Use <Page Up> to initially bring up the zoom box. It starts at full
  781.   screen size. Subsequent use of these keys makes the zoom box smaller or
  782.   larger. Using <Page Down> to enlarge the zoom box when it is already at
  783.   maximum size removes the zoom box from the display. Moving the mouse
  784.   away from you or toward you while holding the left button down performs
  785.   the same functions as these keys.
  786.  
  787.   The cursor "arrow" keys, holding <Ctrl> with the "arrow" keys, and
  788.   moving the mouse without holding any buttons down, moves the zoom box.
  789.  
  790.   Panning: If you move a fullsize zoombox and don't change anything else
  791.   before performing the zoom, Fractint just moves what's already on the
  792.   screen and then fills in the new edges, to reduce drawing time.  This
  793.   feature applies to most fractal types but not all.  A side effect is
  794.   that while an image is incomplete, a full size zoom box moves in steps
  795.   larger than one pixel.  Fractint keeps the box on multiple pixel
  796.   boundaries, to make panning possible.  As a multi-pass (e.g. solid
  797.   guessing) image approaches completion, the zoom box can move in smaller
  798.   increments.
  799.  
  800.   <Ctrl><Keypad->, <Ctrl><Keypad+>
  801.   Holding <Ctrl> and pressing the numeric keypad's + or - keys rotates
  802.   the zoom box. Moving the mouse left or right while holding the right
  803.   button down performs the same function.
  804.  
  805.   <Ctrl><Page Up>, <Ctrl><Page Down>
  806.   These commands change the zoom box's "aspect ratio", stretching or
  807.   shrinking it vertically. Moving the mouse away from you or toward you
  808.   while holding both buttons (or the middle button on a 3-button mouse)
  809.   down performs the same function. There are no commands to directly
  810.   stretch or shrink the zoom box horizontally - the same effect can be
  811.   achieved by combining vertical stretching and resizing.
  812.  
  813.   <Ctrl><Home>, <Ctrl><End>
  814.   These commands "skew" the zoom box, moving the top and bottom edges in
  815.   opposite directions. Moving the mouse left or right while holding both
  816.   buttons (or the middle button on a 3-button mouse) down performs the
  817.   same function. There are no commands to directly skew the left and
  818.   right edges - the same effect can be achieved by using these functions
  819.   combined with rotation.
  820.  
  821.   <Ctrl><Insert>, <Ctrl><Delete>
  822.   These commands change the zoom box color. This is useful when you're
  823.   having trouble seeing the zoom box against the colors around it. Moving
  824.  
  825.  
  826.                                        14
  827.  
  828.   the mouse away from you or toward you while holding the right button
  829.   down performs the same function.
  830.  
  831.   You may find it difficult to figure out what combination of size,
  832.   position, rotation, stretch, and skew to use to get a particular result.
  833.   (We do.) A good way to get a feel for all these functions is to play
  834.   with the Gingerbreadman fractal type. Gingerbreadman's shape makes it
  835.   easy to see what you're doing to him. A warning though: Gingerbreadman
  836.   will run forever, he's never quite done! So, pre-empt with your next
  837.   zoom when he's baked enough.
  838.  
  839.   If you accidentally change the shape of your zoom box, or rotate and
  840.   forget which way is up, just use <Page Down> to make it bigger until
  841.   it is removed from the display, then <Page Up> to get a fresh one.
  842.   With the mouse, after removing the old zoom box from the display,
  843.   release and re-press the left button to get a fresh one.
  844.  
  845.   If your screen does not have a 4:3 "aspect ratio" (i.e. if the visible
  846.   display area on it is not 1.333 times as wide as it is high), rotating
  847.   and zooming will have some odd effects - angles will change, including
  848.   the zoom box's shape itself, circles (if you are so lucky as to see
  849.   any with a non-standard aspect ratio) become non-circular, and so on.
  850.   The vast majority of PC screens *do* have a 4:3 aspect ratio.
  851.  
  852.   Zooming is not implemented for the plasma and diffusion fractal types,
  853.   nor for <O>verlayed and <3>d images. A few fractal types support zooming
  854.   but do not support rotation and skewing - nothing happens when you try it.
  855.  
  856.  
  857.                                 HINTS
  858.  
  859.   Remember, you do NOT have to wait for the program to finish a full
  860.   screen display before entering a command. If you see an interesting
  861.   spot you want to zoom in on while the screen is half-done, don't wait -
  862.   - do it! If you think after seeing the first few lines that another
  863.   video mode would look better, go ahead -- FRACTINT will shift modes and
  864.   start the re-draw at once. When it finishes a display, it beeps and
  865.   waits for your next command.
  866.  
  867.   In general, the most interesting areas are the "border" areas where the
  868.   colors are changing rapidly. Zoom in on them for the best results. The
  869.   first Mandelbrot-set (default) fractal image has a large, solid-colored
  870.   interior that is the slowest to display; there's nothing to be seen by
  871.   zooming there.
  872.  
  873.   Plotting time is directly proportional to the number of pixels in a
  874.   screen, and hence increases with the resolution of the video mode.
  875.   After you get used to the first "zoom levels," you may want to start in
  876.   a low-resolution mode for quick progress, and switch to a higher-
  877.   resolution mode when things get interesting. Or use the <G>uessing mode
  878.   and pre-empt with a zoom before it finishes. Plotting time also varies
  879.   with the maximum iteration setting, the fractal type, and your choice
  880.   of drawing mode. Solid-guessing (the default) is fastest, but it can be
  881.   wrong: perfectionists will want to use dual-pass mode (its first-pass
  882.   preview is handy if you might zoom pre-emptively) or single-pass mode.
  883.  
  884.  
  885.                                        15
  886.  
  887.  
  888.   When you start systematically exploring, you can save time (and hey,
  889.   every little bit helps -- these "objects" are INFINITE, remember!) by
  890.   <S>aving your last screen in a session to a file, and then going
  891.   straight to it the next time with FRACTINT FRACTxxx (the .GIF
  892.   extension is assumed). Or you could simply hit <B> to create a batch
  893.   file with the "recipe" for a given image, and next time start with
  894.   FRABATCH to re-plot it. See Sec. 4 for more on batch mode and the
  895.   command-line arguments the <B> command writes.
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.                                        16
  945.  
  946.   2. FRACTAL TYPES
  947.  
  948.   This section is intended only as a quick introduction to the types;
  949.   more detail on the mathematics of types other than the Mandelbrot set
  950.   can be found in Appendix A, and some notes on how FRACTINT calculates
  951.   them in Sec. 6.
  952.  
  953.   FRACTINT starts by default with the Mandelbrot set. You can change that
  954.   by firing it up with the command-line argument "TYPE=" followed by one
  955.   of the names in parentheses below, or within the program by hitting <T>
  956.   and typing in the name. If parameters are needed, you will be prompted
  957.   for them.
  958.  
  959.   In the text that follows, due to the limitations of the ASCII character
  960.   set, "a*b" means "a times b", and "a^b" means "a to the power b".
  961.  
  962.  
  963.   THE MANDELBROT SET (type=mandel)
  964.  
  965.   This set is the classic: the only one implemented in many plotting
  966.   programs, and the source of most of the printed fractal images pub-
  967.   lished in recent years. Like most of the other types in FRACTINT, it is
  968.   simply a graph: the x (horizontal) and y (vertical) coordinate axes
  969.   represent ranges of two independent quantities, with various colors
  970.   used to symbolize levels of a third quantity which depends on the first
  971.   two. So far, so good: basic analytic geometry.
  972.  
  973.   Now things get a bit hairier. The x axis is ordinary, vanilla real
  974.   numbers. The y axis is an imaginary number, i.e. a real number times i,
  975.   where i is the square root of -1. Every point on the plane -- in this
  976.   case, your PC's display screen -- represents a complex number of the
  977.   form:
  978.  
  979.   x-coordinate + i * y-coordinate
  980.  
  981.   If your math training stopped before you got to imaginary and complex
  982.   numbers, this is not the place to catch up. Suffice it to say that they
  983.   are just as "real" as the numbers you count fingers with (they're used
  984.   every day by electrical engineers) and they can undergo the same kinds
  985.   of algebraic operations.
  986.  
  987.   OK, now pick any complex number -- any point on the complex plane --
  988.   and call it C, a constant. Pick another, this time one which can vary,
  989.   and call it Z. Starting with Z=0 (i.e., at the origin, where the real
  990.   and imaginary axes cross), calculate the value of the expression
  991.  
  992.   Z^2 + C
  993.  
  994.   Take the result, make it the new value of the variable Z, and calculate
  995.   again. Take that result, make it Z, and do it again, and so on: in
  996.   mathematical terms, iterate the function Z(n+1) = Z(n)^2 + C. For
  997.   certain values of C, the result "levels off" after a while. For all
  998.   others, it grows without limit. The Mandelbrot set you see at the start
  999.   -- the solid-colored lake (blue by default), the blue circles sprouting
  1000.   from it, and indeed every point of that color -- is the set of all
  1001.  
  1002.  
  1003.                                        17
  1004.  
  1005.   points C for which the value of Z is less than 2 after 150 iterations
  1006.   (default setting). All the surrounding "contours" of other colors
  1007.   represent points for which Z exceeds 2 after 149 iterations (the
  1008.   contour closest to the M-set itself), 148 iterations, (the next one
  1009.   out), and so on.
  1010.  
  1011.   Some features of interest:
  1012.  
  1013.   1. Use the > key or the <X> options screen to increase the number of
  1014.   iterations. Notice that the boundary of the M-set becomes more and more
  1015.   convoluted (the technical terms are "wiggly," "squiggly," and "utterly
  1016.   bizarre") as the Z-values for points that were still within the set
  1017.   after 150 iterations turn out to exceed 2 after 200, 500, or 1200.
  1018.   In fact, it can be proven that the true boundary is infinitely long:
  1019.   detail without limit.
  1020.  
  1021.   2. Although there appear to be isolated "islands" of blue, zoom in --
  1022.   that is, plot for a smaller range of coordinates to show more detail --
  1023.   and you'll see that there are fine "causeways" of blue connecting them
  1024.   to the main set. As you zoomed, smaller islands became visible; the
  1025.   same is true for them. In fact, there are no isolated points in the M-
  1026.   set: it is "connected" in a strict mathematical sense.
  1027.  
  1028.   3. The upper and lower halves of the first image are symmetric (a fact
  1029.   that FRACTINT makes use of here and in some other fractal types to
  1030.   speed plotting). But notice that the same general features --lobed
  1031.   discs, spirals, starbursts -- tend to repeat themselves
  1032.   (although never exactly) at smaller and smaller scales, so that it can
  1033.   be impossible to judge by eye the scale of a given image.
  1034.  
  1035.   4. In a sense, the contour colors are window-dressing: mathematically,
  1036.   it is the properties of the M-set itself that are interesting, and no
  1037.   information about it would be lost if all points outside the set were
  1038.   assigned the same color. If you're a serious, no-nonsense type, you may
  1039.   want to cycle the colors just once to see the kind of silliness that
  1040.   other people enjoy, and then never do it again. Go ahead. Just once,
  1041.   now. We trust you.
  1042.  
  1043.  
  1044.   JULIA SETS (type=julia)
  1045.  
  1046.   These sets were named for mathematician Gaston Julia, and can be
  1047.   generated by a simple change in the iteration process described above.
  1048.   Start with a specified value of C, "C-real + i * C-imaginary"; use as
  1049.   the initial value of Z "x-coordinate + i * y-coordinate"; and repeat
  1050.   the same iteration, Z(n+1) = Z(n)^2 + C.
  1051.  
  1052.   There is a Julia set corresponding to every point on the complex
  1053.   plane -- an infinite number of Julia sets. But the most visually
  1054.   interesting tend to be found for the same C values where the M-set
  1055.   image is busiest, i.e. points just outside the boundary. Go too far
  1056.   inside, and the corresponding Julia set is a circle; go too far out-
  1057.   side, and it breaks up into scattered points. In fact, all Julia sets
  1058.   for C within the M-set share the "connected" property of the M-set, and
  1059.   all those for C outside lack it.
  1060.  
  1061.  
  1062.                                        18
  1063.  
  1064.   FRACTINT's spacebar toggle lets you "flip" between any view of the M-set
  1065.   and the Julia set for the point C at the center of that screen. You can
  1066.   then toggle back, or zoom your way into the Julia set for a while and then
  1067.   return to the M-set. So if the infinite complexity of the M-set palls,
  1068.   remember: each of its infinite points opens up a whole new Julia set.
  1069.  
  1070.   Historically, the Julia sets came first: it was while looking at the M-
  1071.   set as an "index" of all the Julia sets' origins that Mandelbrot
  1072.   noticed its properties.
  1073.  
  1074.   The relationship between the Mandelbrot set and Julia set can hold
  1075.   between other sets as well.  Many of FRACTINT's types are
  1076.   "Mandelbrot/Julia" pairs (sometimes called "M-sets" or "J-sets". All
  1077.   these are generated by equations that are of the form z(k+1) =
  1078.   f(z(k),c), where the function orbit is the sequence z(0), z(1), ..., and
  1079.   the variable c is a complex parameter of the equation. The value c is
  1080.   fixed for "Julia" sets and is equal to the first two parameters entered
  1081.   with the "params=Creal/Cimag" command. The initial orbit value z(0) is
  1082.   the complex number corresponding to the screen pixel. For Mandelbrot
  1083.   sets, the parameter c is the complex number corresponding to the screen
  1084.   pixel. The value z(0) is c plus a perturbation equal to the values of
  1085.   the first two parameters.  See discussion of "type=mandellambda" this
  1086.   approach may or may not be the "standard" way to create "Mandelbrot"
  1087.   sets out of "Julia" sets.
  1088.  
  1089.   Some equations have additional parameters.  These values is entered as the
  1090.   third for fourth params= value for both Julia and Mandelbrot sets. The
  1091.   variables x and y refer to the real and imaginary parts of z; similarly,
  1092.   cx and cy are the real and imaginary parts of the parameter c and fx(z)
  1093.   and fy(z) are the real and imaginary parts of f(z). The variable c is
  1094.   sometimes called lambda for historical reasons.
  1095.  
  1096.   NOTE: if you use the "PARAMS=" argument to warp the M-set by starting
  1097.   with an initial value of Z other than 0, the M-set/J-sets correspon-
  1098.   dence breaks down and the spacebar toggle no longer works.
  1099.  
  1100.  
  1101.   NEWTON DOMAINS OF ATTRACTION (type=newtbasin)
  1102.  
  1103.   The Newton formula is an algorithm used to find the roots of polynomial
  1104.   equations by successive "guesses" that converge on the correct value as
  1105.   you feed the results of each approximation back into the formula. It
  1106.   works very well -- unless you are unlucky enough to pick a value that
  1107.   is on a line BETWEEN two actual roots. In that case, the sequence
  1108.   explodes into chaos, with results that diverge more and more wildly as
  1109.   you continue the iteration.
  1110.  
  1111.   This fractal type shows the results for the polynomial Z^n - 1, which
  1112.   has n roots in the complex plane. Use the <T>ype command and enter
  1113.   "newtbasin" in response to the prompt. You will be asked for a parame-
  1114.   ter, the "order" of the equation (an integer from 3 through 10 -- 3 for
  1115.   x^3 - 1, 7 for x^7-1, etc.). A second parameter is a flag to turn on
  1116.   alternating shades showing changes in the number of iterations needed to
  1117.   attract an orbit. Some people like stripes and some don't, as always,
  1118.   FRACTINT gives you a choice!
  1119.  
  1120.  
  1121.                                        19
  1122.  
  1123.  
  1124.   The coloring of the plot shows the "basins of attraction" for each root
  1125.   of the polynomial -- i.e., an initial guess within any area of a given
  1126.   color would lead you to one of the roots. As you can see, things get a
  1127.   bit weird along certain radial lines or "spokes," those being the lines
  1128.   between actual roots. By "weird," we mean infinitely complex in the good
  1129.   old fractal sense. Zoom in and see for yourself.
  1130.  
  1131.   This fractal type is symmetric about the origin, with the number of
  1132.   "spokes" depending on the order you select. It uses floating-point math
  1133.   if you have an FPU, or a somewhat slower integer algorithm if you don't
  1134.   have one.
  1135.  
  1136.  
  1137.   NEWTON (type=newton)
  1138.  
  1139.   The generating formula here is identical to that for newtbasin, but the
  1140.   coloring scheme is different. Pixels are colored not according to the
  1141.   root that would be "converged on" if you started using Newton's formula
  1142.   from that point, but according to the iteration when the value is close
  1143.   to a root.  For example, if the calculations for a particular pixel
  1144.   converge to the 7th root on the 23rd iteration, NEWTBASIN will color
  1145.   that pixel using color #7, but NEWTON will color it using color #23.
  1146.  
  1147.   If you have a 256-color mode, use it: the effects can be much livelier
  1148.   than those you get with type=newtbasin, and color cycling becomes, like,
  1149.   downright cosmic. If your "corners" choice is symmetrical, FRACTINT
  1150.   exploits the symmetry for faster display. There is symmetry in
  1151.   newtbasin, too, but the current version of the software isn't smart
  1152.   enough to exploit it.
  1153.  
  1154.   The applicable "params=" values are the same as newtbasin. Try
  1155.   "params=4." Other values are 3 through 10. 8 has twice the symmetry and
  1156.   is faster. As with newtbasin, an FPU helps.
  1157.  
  1158.  
  1159.   COMPLEX NEWTON (type=complexnewton and type=complexbasin)
  1160.  
  1161.   Well, hey, "Z^n - 1" is so boring when you can use "Z^a - b" where "a"
  1162.   and "b" are complex numbers!  The new "complexnewton" and "complexbasin"
  1163.   fractal types are just the old "newton" and "newtbasin" fractal types
  1164.   with this little added twist.  When you select these fractal types, you
  1165.   are prompted for four values (the real and imaginary portions of "a" and
  1166.   "b").  If "a" has a complex portion, the fractal has a discontinuity
  1167.   along the negative axis - relax, we finally figured out that it's
  1168.   *supposed* to be there!
  1169.  
  1170.  
  1171.   LAMBDA SETS (type=lambda)
  1172.  
  1173.   This type calculates the Julia set of the formula lambda*Z*(1-Z). That
  1174.   is, the value Z[0] is initialized with the value corresponding to each
  1175.   pixel position, and the formula iterated. The pixel is colored accord-
  1176.   ing to the iteration when the sum of the squares of the real and
  1177.   imaginary parts exceeds 4.
  1178.  
  1179.  
  1180.                                        20
  1181.  
  1182.   Two parameters, the real and imaginary parts of lambda, are required.
  1183.   Try 0 and 1 to see the classical fractal "dragon". Then try 0.2 and 1
  1184.   for a lot more detail to zoom in on.
  1185.  
  1186.   It turns out that all quadratic Julia-type sets can be calculated using
  1187.   just the formula z^2+c (the "classic" Julia"), so that this type is
  1188.   redundant, but we include it for reason of it's prominence in the
  1189.   history of fractals.
  1190.  
  1191.  
  1192.   MANDELLAMBDA SETS (type=mandellambda)
  1193.  
  1194.   This type is the "Mandelbrot equivalent" of the lambda set. A comment is
  1195.   in order here.  Almost all the FRACTINT "Mandelbrot" sets are created
  1196.   from orbits generated using formulas like z(n+1) = f(z(n),C), with z(0)
  1197.   and C initialized to the complex value corresponding to the current
  1198.   pixel. Our reasoning was that "Mandelbrots" are maps of the
  1199.   corresponding "Julias". Using this scheme each pixel of a "Mandelbrot"
  1200.   is colored the same as the Julia set corresponding to that pixel.
  1201.   However, Kevin Allen informs us that the MANDELLAMBDA set appears in the
  1202.   literature with z(0) initialzed to a critical point (a point where the
  1203.   derivative of the formula is zero), which in this case happens to be the
  1204.   point (.5,0). Since Kevin knows more about Dr. Mandelbrot than we do,
  1205.   and Dr. Mandelbrot knows more about fractals than we do, we defer!
  1206.   Starting with version 14 FRACTINT calculates MANDELAMBDA Dr.
  1207.   Mandelbrot's way instead of our way.  But ALL THE OTHER "Mandelbrot"
  1208.   sets in FRACTINT are still calculated OUR way! (Fortunately for us, for
  1209.   the classic Mandelbrot Set these two methods are the same!)
  1210.  
  1211.   Well now, folks, apart from questions of faithfulness to fractals named
  1212.   in the literature (which we DO take seriously!), if a formula makes a
  1213.   beautiful fractal, it is not wrong. In fact some of the best fractals in
  1214.   FRACTINT are the results of mistakes! Neverless, thanks to Kevin for
  1215.   keeping us accurate!
  1216.  
  1217.   (See description of "initorbit=" command for a way to experiment with
  1218.   different orbit intializations).
  1219.  
  1220.  
  1221.   PLASMA CLOUDS (type=plasma)
  1222.  
  1223.   Plasma clouds ARE real live fractals , even though we didn't know it at
  1224.   first.  They are generated by a recursive algorithm that randomly picks
  1225.   colors of the corner of a rectangle, and then continues recursively
  1226.   quartering previous rectangles. Random colors are averaged with those of
  1227.   the outer rectangles so that small neighborhoods do not show much
  1228.   change, for a smoothed-out, cloud-like effect. The more colors your
  1229.   video mode supports, the better.  The result, believe it or not, is a
  1230.   fractal landscape viewed as a contour map, with colors indicating
  1231.   constant  elevation.  To see this, save and view with the "3" command
  1232.   (see  section on 3D), and your "cloud" will be converted to a mountain!
  1233.  
  1234.   You've GOT to try palette cycling on these (hit "+" or "-"). If you
  1235.   haven't been hypnotized by the drawing process, the writhing colors will
  1236.   do it for sure. We have now implemented subliminal messages to exploit
  1237.  
  1238.  
  1239.                                        21
  1240.  
  1241.   the user's vulnerable state; their content varies with your bank
  1242.   balance, politics, gender, accessibility to a FRACTINT programmer, and
  1243.   so on. A free copy of Microsoft C to the first person who spots them.
  1244.  
  1245.   This type accepts a single parameter, which determines how abruptly the
  1246.   colors change. A value of .5 yields bland clouds, while 50 yields very
  1247.   grainy ones. The default value is 2. Zooming is ignored, as each plasma-
  1248.   cloud screen is generated randomly.
  1249.  
  1250.   The algorithm is based on the Pascal program distributed by Bret Mulvey
  1251.   as PLASMA.ARC. We have ported it to C and integrated it with FRACTINT's
  1252.   graphics and animation facilities. This implementation does not use
  1253.   floating-point math.
  1254.  
  1255.   Saved plasma-cloud screens are EXCELLENT starting images for fractal
  1256.   "landscapes" created with the "3D" options.
  1257.  
  1258.  
  1259.   LAMBDAFN (type=lambdafn with function=[sin|cos|sinh|cosh|exp|log|sqr])
  1260.  
  1261.   (Prior to version 14, these types were lambdasine, lambdacos,
  1262.   lambdasinh, lambdacos, and lambdaexp. Where we say "lambdasine" or some
  1263.   such below, the good reader knows we mean "lambdafn with function=sin".)
  1264.  
  1265.   These types calculate the Julia set of the formula lambda*fn(Z), for
  1266.   various values of the function "fn", where lambda and Z are both
  1267.   complex. Two values, the real and imaginary parts of lambda, should be
  1268.   given in the "params=" option.  For the feathery, nested spirals of
  1269.   LambdaSines and the frost-on-glass patterns of LambdaCosines, make the
  1270.   real part = 1, and try values for the imaginary part ranging from 0.1 to
  1271.   0.4 (hint: values near 0.4 have the best patterns). In these ranges the
  1272.   Julia set "explodes". For the tongues and blobs of LambdaExponents, try
  1273.   a real part of 0.379 and an imaginary part of 0.479.
  1274.  
  1275.   A co-processor used to be almost mandatory: each LambdaSine/Cosine
  1276.   iteration calculates a hyperbolic sine, hyperbolic cosine, a sine, and a
  1277.   cosine (the LambdaExponent iteration "only" requires an exponent, sine,
  1278.   and cosine operation)!  However, FRACTINT now computes these
  1279.   transcendental functions with fast integer math. In a few cases the fast
  1280.   math is less accurate, so we have kept the old slow floating point code.
  1281.   To use the old code, invoke with the float=yes option, and, if you DON'T
  1282.   have a co-processor, go on a LONG vacation!
  1283.  
  1284.  
  1285.   MANDELFN (type=mandelfn with function=[sin|cos|sinh|cosh|exp|log|sqr])
  1286.  
  1287.   (Prior to version 14, these types were mandelsine, mandelcos,
  1288.   mandelsinh, mandelcos, and mandelexp. Same comment about our lapses
  1289.   into the old terminology as above!)
  1290.  
  1291.   These are "pseudo-Mandelbrot" mappings for the LambdaFn Julia
  1292.   functions. They map to their corresponding Julia sets via the spacebar
  1293.   command in exactly the same fashion as the original M/J sets.  In general,
  1294.   they are interesting mainly because of that property (the function=exp set
  1295.   in particular is rather boring). Generate the appropriate "Mandelfn" set,
  1296.  
  1297.  
  1298.                                        22
  1299.  
  1300.   zoom on a likely spot where the colors are changing rapidly, and hit the
  1301.   space-bar key to plot the Julia set for that particular point.
  1302.  
  1303.   Try "FRACTINT TYPE=MANDELFN CORNERS=4.68/4.76/-.03/.03 FUNCTION=COS" for a
  1304.   graphic demonstration that we're not taking Mandelbrot's name in vain
  1305.   here. We didn't even know these little buggers were here until Mark
  1306.   Peterson found this a few hours before the version incorporating
  1307.   Mandelfns was released.
  1308.  
  1309.   Note: If you created images using the lambda or mandel "fn" types
  1310.   prior to version 14, and you wish to update the fractal information in
  1311.   the "*.fra" file, simply read the files and save again. You can do this
  1312.   in batch mode via a command line like:
  1313.  
  1314.        "fractint oldfile.fra savename=newfile.gif batch=yes"
  1315.  
  1316.   For example, this procedure can convert a version 13 "type=lambdasine"
  1317.   image to a version 14 "type=lambdafn function=sin" GIF89a image.  We do
  1318.   not promise to keep this "backward compatibility" past version 14 - if you
  1319.   want to keep the fractal information in your *.fra files accurate, we
  1320.   recommend conversion.
  1321.  
  1322.  
  1323.   BARNSLEY MANDELBROT/JULIA SETS (type=barnsleym1/m2/j1/j2/m3/j3)
  1324.  
  1325.   Michael Barnsley has written a fascinating college-level text, "Fractals
  1326.   Everywhere," on fractal geometry and its graphic applica-tions. (See the
  1327.   bibliography, App. D.) In it, he applies the principle of the M and J
  1328.   sets to more general functions of two complex variables.
  1329.  
  1330.   We have incorporated three of Barnsley's examples in FRACTINT. Their
  1331.   appearance suggests polarized-light microphotographs of minerals, with
  1332.   patterns that are less organic and more crystalline than those of the
  1333.   M/J sets. Each example has both a "Mandelbrot" and a "Julia" type.
  1334.   Toggle between them using the space bar.
  1335.  
  1336.   The parameters have the same meaning as they do for the "regular"
  1337.   Mandelbrot and Julia. For types M1, M2, and M3, they are used to "warp"
  1338.   the image by setting the initial value of Z. For the types J1 through
  1339.   J3, they are the values of C in the generating formulas, found in
  1340.   Appendix A.
  1341.  
  1342.   Be sure to try the <O>rbit function while plotting these types.
  1343.  
  1344.  
  1345.   BARNSLEY IFS FRACTALS (type=ifs, ifs3d)
  1346.  
  1347.   One of the most remarkable spin-offs of fractal geometry is the ability
  1348.   to "encode" realistic images in very small sets of numbers -- parame-
  1349.   ters for a set of functions that map a region of two-dimensional space
  1350.   onto itself. In principle (and increasingly in practice), a scene of any
  1351.   level of complexity and detail can be stored as a handful of numbers,
  1352.   achieving amazing "compression" ratios... how about a super-VGA image of
  1353.   a forest, more than 300,000 pixels at eight bits apiece, from a 1-KB
  1354.   "seed" file?
  1355.  
  1356.  
  1357.                                        23
  1358.  
  1359.   Again, Michael Barnsley and his co-workers at the Georgia Institute of
  1360.   Technology are to be thanked for pushing the development of these
  1361.   iterated function systems (IFS).
  1362.  
  1363.   Invoking FRACTINT with "TYPE=ifs" defaults to an IFS "fern". Other IFS
  1364.   images can be created via the FERN, TRIANGLE and TREE files included
  1365.   with FRACTINT, or from user-written files with the default extension
  1366.   *.IFS. Use the command-line argument "IFS=filename" or the main-menu <I>
  1367.   command to use or manipulate one of these files. Specify whether 2D or
  1368.   "3D" if you have not already chosen an IFS type. You will then be asked
  1369.   to pick which function to edit. Hitting <Enter> leaves values unchanged.
  1370.  
  1371.   Each line in an IFS code file contains the parameters for one of the
  1372.   generating functions, e.g. in FERN.IFS:
  1373.  
  1374.      a    b     c    d    e    f    p
  1375.    ___________________________________
  1376.      0    0     0  .16    0    0   .01
  1377.    .85   .04 -.04  .85    0  1.6   .85
  1378.    .2   -.26  .23  .22    0  1.6   .07
  1379.    -.15  .28  .26  .24    0  .44   .07
  1380.  
  1381.   The "p" values are the probabilities assigned to each function (how
  1382.   often it is used), which add up to one. FRACTINT supports up to 32
  1383.   functions, although usually three or four are enough.
  1384.  
  1385.   Note that some Barnsley IFS values generate images quite a bit smaller
  1386.   than the initial (default) screen. Just bring up the zoom box, center it
  1387.   on the small image, and hit the ENTER key to get a full-screen image.
  1388.  
  1389.   In order to fully appreciate the 3D fern, since your monitor is presum-
  1390.   ably 2D, we have added rotation, translation, and perspective capabili-
  1391.   ties. These share values with the same variables used in FRACTINT's
  1392.   other 3D facilities; for their meaning see "3D Images", farther on in
  1393.   this section. You can enter these values from the command line using:
  1394.  
  1395.   rotation=xrot/yrot/zrot       (try 30/30/30)
  1396.   shift=xshift/yshift           (shifts BEFORE applying perspective!)
  1397.   perspective=viewerposition    (try 200)
  1398.  
  1399.   Alternatively, entering "e" (for edit) from main screen or  entering a
  1400.   "t" (for "transformations") from the IFS 3D codes-editing screen, will
  1401.   allow you to edit these values. The defaults are the same as for regular
  1402.   3D, and are not always optimum for the 3D fern. Try rotation=30/30/30.
  1403.   Note that applying shift when using perspective changes the picture --
  1404.   your "point of view" is moved.
  1405.  
  1406.   A truly wild variation of 3D may be seen by entering "2" for the stereo
  1407.   mode, putting on red/blue "funny glasses", and watching the fern develop
  1408.   with full depth perception right there before your eyes!
  1409.  
  1410.   This feature USED to be dedicated to Bruce Goren, as a bribe to get him
  1411.   to send us MORE knockout stereo slides of 3D ferns, now that we have
  1412.   made it so easy! Bruce, what have you done for us *LATELY* ?? (Just
  1413.   kidding, really!)
  1414.  
  1415.  
  1416.                                        24
  1417.  
  1418.  
  1419.  
  1420.   SIERPINSKI GASKET (type=sierpinski)
  1421.  
  1422.   Another pre-Mandelbrot classic, this one found by W. Sierpinski around
  1423.   World War I. It is generated by dividing a triangle into four congruent
  1424.   smaller triangles, doing the same to each of them, and so on, yea, even
  1425.   unto infinity. (Notice how hard we try to avoid reiterating "iterat-
  1426.   ing"?)
  1427.  
  1428.   If you think of the interior triangles as "holes", they occupy more and
  1429.   more of the total area, while the "solid" portion becomes as hopelessly
  1430.   fragile as that gasket you HAD to remove without damaging it -- you
  1431.   remember, that Sunday afternoon when all the parts stores were closed?
  1432.   There's a three-dimensional equivalent using nested tetrahedrons instead
  1433.   of triangles, but it generates too much pyramid power to be safely
  1434.   unleashed yet.
  1435.  
  1436.   There are no parameters for this type. We were able to implement it with
  1437.   integer math routines, so it runs fairly quickly even without an FPU.
  1438.  
  1439.  
  1440.   QUARTIC MANDELBROT AND JULIA (type=mandel4, julia4)
  1441.  
  1442.   These fractal types are the moral equivalent of the original M and J
  1443.   sets, except that they use the formula Z(n+1) = Z(n)^4 + C, which adds
  1444.   additional pseudo-symmetries to the plots. The "Mandel4" set maps to the
  1445.   "Julia4" set via -- surprise! -- the spacebar toggle. The M4 set is kind
  1446.   of boring at first (the area between the "inside" and the "out-side" of
  1447.   the set is pretty thin, and it tends to take a few zooms to get to any
  1448.   interesting sections), but it looks nice once you get there. The Julia
  1449.   sets look nice right from the start.
  1450.  
  1451.   Other powers, like Z(n)^3 or Z(n)^7, work in exactly the same fashion.
  1452.   We used this one only because we're lazy, and Z(n)^4 = (Z(n)^2)^2.
  1453.  
  1454.  
  1455.   DISTANCE ESTIMATOR MANDELBROT AND JULIA (formerly type=demm, demj, and
  1456.   now type=mandel/type=julia distest=nnn)
  1457.  
  1458.   These types have not died, but are only hiding!  They are equivalent to
  1459.   the mandel and julia types with the "distest=" option selected with a
  1460.   predetermined value.
  1461.  
  1462.   The "Distance Estimator Method" (described under "Doodads, Bells and
  1463.   Whistles") can be used to produce higher quality images of M and J sets,
  1464.   especially suitable for printing in black and white.
  1465.  
  1466.   If you have some *.fra files made with the old types demm/demj, you may
  1467.   want to convert them to the new form.  See "MANDELFN" section for
  1468.   directions to carry out the conversion.
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.                                        25
  1476.  
  1477.   PICKOVER MANDELBROT/JULIA TYPES (type=manfn+zsqrd/julfn+zsqrd,
  1478.      manzpowr/julzpowr,manzzpwr/julzzpwr, manfn+exp/julfn+exp -
  1479.      formerly included man/julsinzsqrd and man/julsinexp which
  1480.      have now been generalized)
  1481.  
  1482.   These types have been explored by Clifford A. Pickover, of the IBM
  1483.   Thomas J. Watson Research center. As implemented in FRACTINT, they are
  1484.   regular Mandelbrot/Julia set pairs that may be plotted with or without
  1485.   the "biomorph" option Pickover used to create organic-looking beasties
  1486.   (see below). These types are produced with formulas built from the
  1487.   functions z^z, z^n, sin(z), and e^z for complex z. Types with "power" or
  1488.   "pwr" in their name have an exponent value as a third parameter. For
  1489.   example, type=manzpower params=0/0/2 is our old friend the classical
  1490.   Mandelbrot, and type=manzpower params=0/0/4 is the Quartic Mandelbrot.
  1491.   Other values of the exponent give still other fractals.  Since these
  1492.   WERE the original "biomorph" types, we should give an example.  Try:
  1493.  
  1494.       FRACTINT type=manfn+sqrd biomorph=0 corners=-8/8/-6/6 function=sin
  1495.  
  1496.   to see a big biomorph digesting little biomorphs!
  1497.  
  1498.  
  1499.   PICKOVER POPCORN (type=popcorn, type=popcornjul)
  1500.  
  1501.   Here is another Pickover idea. This one computes and plots the
  1502.   orbits of the dynamic system defined by:
  1503.  
  1504.            x(n+1) = x(n) - h*sin(y(n)+tan(3*y(n))
  1505.            y(n+1) = y(n) - h*sin(x(n)+tan(3*x(n))
  1506.  
  1507.   with the initializers x(0) and y(0) equal to ALL the complex values
  1508.   within the "corners" values, and h=.01.  ALL these orbits are
  1509.   superimposed, resulting in "popcorn" effect.  You may want to use a
  1510.   maxiter value less than normal - Pickover recommends a value of 50.  As
  1511.   a bonus, type=popcornjul shows the Julia set generated by these same
  1512.   equations with the usual escape-time coloring. Turn on orbit viewing
  1513.   with the "O" command, and as you watch the orbit pattern you may get
  1514.   some insight as to where the popcorn comes from. Although you can zoom
  1515.   and rotate popcorn, the results may not be what you'd expect, due to the
  1516.   superimposing of orbits and arbitrary use of color. Just for fun we added
  1517.   type popcornjul, which is the plain old Julia set calculated from the
  1518.   same formula.
  1519.  
  1520.  
  1521.   PETERSON VARIATIONS (type=marksmandel, marksjulia, cmplxmarksmand,
  1522.       cmplxmarksjul)
  1523.  
  1524.   These fractal types are contributions of Mark Peterson. MarksMandel and
  1525.   MarksJulia are two families of fractal types that are linked in the same
  1526.   manner as the classic Mandelbrot/Julia sets: each MarksMandel set can be
  1527.   considered as a mapping into the MarksJulia sets, and is linked with the
  1528.   spacebar toggle. The basic equation for these sets is:
  1529.  
  1530.         Z(n+1) = ((lambda^n) * Z(n)^2) + lambda
  1531.  
  1532.  
  1533.  
  1534.                                        26
  1535.  
  1536.   where Z(0) = 0.0 and lambda is (x + iy) for MarksMandel. For MarksJulia,
  1537.   Z(0) = (x + iy) and lambda is a constant (taken from the MarksMandel
  1538.   spacebar toggle, if that method is used). The exponent is a positive
  1539.   integer or a complex number. We call these "families" because each value
  1540.   of the exponent yields a different MarksMandel set, which turns out to
  1541.   be a kinda-polygon with (exponent+1) sides. The exponent value is the
  1542.   third parameter, after the "initialization warping" values. Typically
  1543.   one would use null warping values, and specify the exponent with
  1544.   something like "PARAMS=0/0/4", which creates an unwarped, pentagonal
  1545.   MarksMandel set.
  1546.  
  1547.  
  1548.   UNITY (type=unity)
  1549.  
  1550.   This Peterson variation began with curiosity about other "Newton-style"
  1551.   approximation processes. A simple one,
  1552.  
  1553.      One = (x * x) + (y * y);
  1554.      y = (2 - One) * x;
  1555.      x = (2 - One) * y;
  1556.  
  1557.   produces the fractal called Unity.
  1558.  
  1559.   One of its interesting features is the "ghost lines." The iteration loop
  1560.   bails out when it reaches the number 1 to within the resolution of a
  1561.   screen pixel. When you zoom a section of the image, the bailout
  1562.   criterion is adjusted, causing some lines to become thinner and others
  1563.   thicker.
  1564.  
  1565.   Only one line in Unity that forms a perfect circle: the one at a radius
  1566.   of 1 from the origin. This line is actually infinitely thin. Zooming on
  1567.   it reveals only a thinner line, up (down?) to the limit of accuracy for
  1568.   the algorithm. The same thing happens with other lines in the fractal,
  1569.   such as those around |x| = |y| = (1/2)^(1/2) = .7071
  1570.  
  1571.   Try some other tortuous approximations using the TEST stub (see below)
  1572.   and let us know what you come up with!
  1573.  
  1574.   SCOTT TAYLOR/LEE SKINNER VARIATIONS (type=fn(z*z), fn*fn, fn*z+z, fn+fn
  1575.        sqr(1/fn), sqr(fn), spider, tetrate, manowar
  1576.  
  1577.   Two of FRACTINT's faithful users went bonkers when we introduced the
  1578.   "formula" type, and came up with all kinds of variations on escape-
  1579.   time fractals using trig functions.  We decided to put them in as regular
  1580.   types, but there were just too many! So we defined the types with variable
  1581.   functions and let you, the, overwhelmed user, specify what the functions
  1582.   should be! Thus Scott Taylor's "z = sin(z) + z^2" formula type is now the
  1583.   "fn+fn" regular type, and EITHER function can be one of sin, cos, sinh,
  1584.   cosh, exp, log, or sqr. Plus we give you 4 parmeters to set, the complex
  1585.   coefficients of the two functions!  Thus the innocent-looking "fn+fn" type
  1586.   is really at least 36 different types in disguise, not counting the damage
  1587.   done by the parameters!
  1588.  
  1589.  
  1590.  
  1591.  
  1592.  
  1593.                                        27
  1594.  
  1595.   Lee informs us that you should not judge fractals by their "outer"
  1596.   appearance. For example, the images produced by z = sin(z) + z^2 and
  1597.   z = sin(z) - z^2 look very similar, but are different when you zoom in.
  1598.  
  1599.  
  1600.   KAM TORUS (type=kamtorus, kamtorus3d)
  1601.  
  1602.   This type is created by superimposing orbits generated by a set of
  1603.   equations, with a variable incremented each time.
  1604.            x(0) = y(0) = orbit/3;
  1605.            x(n+1) = x(n)*cos(a) + (x(n)*x(n)-y(n))*sin(a)
  1606.            y(n+1) = x(n)*sin(a) - (x(n)*x(n)-y(n))*cos(a)
  1607.   After each orbit, 'orbit' is incremented by a step size. The parmeters
  1608.   are angle "a", step size for incrementing 'orbit', stop value for 'orbit',
  1609.   and points per orbit. Try this with a stop value of 5 with sound=x for
  1610.   some weird fractal music (ok, ok, fractal noise)! You will also see the
  1611.   KAM Torus head into some chaotic territory that Scott Taylor wanted to
  1612.   hide from you by setting the defaults the way he did, but now we have
  1613.   revealed all!
  1614.  
  1615.   The 3D variant is created by treating 'orbit' as the z coordinate.
  1616.  
  1617.  
  1618.   BIFURCATION (type=bifurcation, biflambda, bif+sinpi, bif=sinpi)
  1619.  
  1620.   The wonder of fractal geometry is that such complex forms can arise from
  1621.   such simple generating processes. A parallel surprise has emerged in the
  1622.   study of dynamical systems: that simple, deterministic equations can
  1623.   yield chaotic behavior, in which the system never settles down to a
  1624.   steady state or even a periodic loop. Often such systems behave normal-
  1625.   ly up to a certain level of some controlling parameter, then go through
  1626.   a transition in which there are two possible solutions, then four, and
  1627.   finally a chaotic array of possibilities.
  1628.  
  1629.   This emerged many years ago in biological models of population growth.
  1630.   Consider a (highly over-simplified) model in which the rate of growth is
  1631.   partly a function of the size of the current population:
  1632.  
  1633.   New Population =  Growth Rate * Old Population * (1 - Old Population)
  1634.  
  1635.   where population is normalized to be between 0 and 1. At growth rates
  1636.   less than 200 percent, this model is stable: for any starting value,
  1637.   after several generations the population settles down to a stable level.
  1638.   But for rates over 200 percent, the equation's curve splits or
  1639.   "bifurcates" into two discrete solutions, then four, and soon becomes
  1640.   chaotic.
  1641.  
  1642.   Type=bifurcation illustrates this model. (Although it's now considered a
  1643.   poor one for real populations, it helped get people thinking about
  1644.   chaotic systems.) The horizontal axis represents growth rates, from 190
  1645.   percent (far left) to 400 percent; the vertical axis normalized popula-
  1646.   tion values, from 0 to 4/3. Notice that within the chaotic region, there
  1647.   are narrow bands where there is a small, odd number of stable values. It
  1648.   turns out that the geometry of this branching is fractal; zoom in where
  1649.   changing pixel colors look suspicious, and see for yourself.
  1650.  
  1651.  
  1652.                                        28
  1653.  
  1654.  
  1655.   The default display has been filtered by allowing the population to
  1656.   settle from its initial value for 5000 cycles before plotting maxiter
  1657.   population values. To override this filter value, specify a new (smaller)
  1658.   one as the first "PARAMS=" value. "PARAMS=1" produces an unfiltered map.
  1659.  
  1660.   Many formulae can be used to produce bifurcations.  Mitchel Feigenbaum
  1661.   studied lots of bifurcations in the mid-70's, using a HP-65 calculator
  1662.   (IBM PCs, Fractals, and Fractint, were all Sci-Fi then !).
  1663.  
  1664.   He studied where bifurcations occurred, for the formula r*p*(1-p), the
  1665.   one described above.  He found that the ratios of lengths of adjacent
  1666.   areas of bifurcation were four and a bit.  These ratios vary, but, as
  1667.   the growth rate increases, they tend to a limit of 4.669+.  This helped
  1668.   him guess where bifurcation points would be, and saved lots of time.
  1669.  
  1670.   When he studied bifurcations of r*sin(PI*p) he found a similar pattern,
  1671.   which is not surprising in itself.  However, 4.669+ popped out, again.
  1672.   Different formulae, same number ?  Now, THAT's surprising !  He tried
  1673.   many other formulae and ALWAYS got 4.669+ - Hot Damn !!!  So hot, in
  1674.   fact, that he phoned home and told his Mom it would make him Famous !
  1675.   He also went on to tell other scientists.  The rest is History...
  1676.  
  1677.   (It has been conjectured that if Feigenbaum had had a copy of Fractint,
  1678.   and used it to study bifurcations, he may never have found his Number,
  1679.   as it only became obvious from long perusal of hand-written lists of
  1680.   values, without the distraction of wild colour-cycling effects !).
  1681.  
  1682.   We now know that this number is as universal as PI or E. It appears in
  1683.   situations ranging from fluid-flow turbulence, electronic oscillators,
  1684.   chemical reactions, and even the Mandelbrot Set - yup, fraid so :
  1685.   "budding" of the Mandelbrot Set along the negative real axis occurs at
  1686.   intervals determined by Feigenbaum's Number, 4.669201660910.....
  1687.  
  1688.   Fractint does not make direct use of the Feigenbaum Number (YET !).
  1689.   However, it does now reflect the fact that there is a whole sub-species
  1690.   of Bifurcation-type fractals.  Those implemented to date, and the
  1691.   related formulae, (writing P for pop[n+1] and p for pop[n]) are :
  1692.  
  1693.     bifurcation   P =  p + r*p*(1-p)      Verhulst Bifurcations.
  1694.     biflambda     P =      r*p*(1-p)      Real equivalent of Lambda Sets.
  1695.     bif+sinpi     P =  p + r*sin(PI*p)    Population scenario based on...
  1696.     bif=sinpi     P =      r*sin(PI*p)    ...Feigenbaum's second formula.
  1697.  
  1698.   It took a while for bifurcations to appear here, despite them being
  1699.   over a century old, and intimately related to chaotic systems.
  1700.   However, they are now truly alive and well in Fractint!
  1701.  
  1702.  
  1703.   LORENZ ATTRACTORS (type=lorenz and type=lorenz3d)
  1704.  
  1705.   The "Lorenz Attractor" is a "simple" set of three deterministic
  1706.   equations developed by Edward Lorenz while studying the non-
  1707.   repeatability of weather patterns.  The weather forecaster's basic
  1708.   problem is that even very tiny changes in initial patterns ("the beating
  1709.  
  1710.  
  1711.                                        29
  1712.  
  1713.   of a butterfly's wings" - the official term is "sensitive dependence on
  1714.   initial conditions") eventually reduces the best weather forecast to
  1715.   rubble.
  1716.  
  1717.   The lorenz attractor is the plot of the orbit of a dynamic system
  1718.   consisting of three first order non-linear differential equations. The
  1719.   solution to the differential equation is vector-valued function of one
  1720.   variable.  If you think of the variable as time, the solution traces an
  1721.   orbit.  The orbit is made up of two spirals at an angle to each other in
  1722.   three dimensions. We change the orbit color as time goes on to add a
  1723.   little dazzle to the image.  The equations are:
  1724.  
  1725.                   dx/dt = -a*x + a*y
  1726.                   dy/dt =  b*x - y   -z*x
  1727.                   dz/dt = -c*z + x*y
  1728.  
  1729.   We solve these differential equations approximately using a method known
  1730.   as the first order taylor series.  Calculus teachers everywhere will
  1731.   kill us for saying this, but you treat the notation for the derivative
  1732.   dx/dt as though it really is a fraction, with "dx" the small change in x
  1733.   that happens when the time changes "dt".  So multiply through the above
  1734.   equations by dt, and you will have the change in the orbit for a small
  1735.   time step. We add these changes to the old vector to get the new vector
  1736.   after one step. This gives us:
  1737.  
  1738.                xnew = x + (-a*x*dt) + (a*y*dt)
  1739.                ynew = y + (b*x*dt) - (y*dt) - (z*x*dt)
  1740.                znew = z + (-c*z*dt) + (x*y*dt)
  1741.  
  1742.                (default values: dt = .02, a = 5, b = 15, c = 1)
  1743.  
  1744.   We connect the successive points with a line, project the resulting 3D
  1745.   orbit onto the screen, and voila! The Lorenz Attractor!
  1746.  
  1747.   We have added two versions of the Lorenz Attractor.  "Type=lorenz" is
  1748.   the Lorenz attractor as seen in everyday 2D.  "Type=lorenz3d" is the
  1749.   same set of equations with the added twist that the results are run
  1750.   through our perspective 3D routines, so that you get to view it from
  1751.   different angles (you can modify your perspective "on the fly" using the
  1752.   transformation option of the <E>ditor command.) If you set the "stereo"
  1753.   option to "2", and have red/blue funny glasses on, you will see the
  1754.   attractor orbit with depth perception.
  1755.  
  1756.   Hint: the default perspective values (x = 60, y = 30, z = 0) aren't the
  1757.   best ones to use for fun Lorenz Attractor viewing.  Experiment a bit -
  1758.   start with rotation values of 0/0/0 and then change to 20/0/0 and 40/0/0
  1759.   to see the attractor from different angles.- and while you're at it, use
  1760.   a non-zero perspective point Try 100 and see what happens when you get
  1761.   *inside* the Lorenz orbits.  Here comes one - Duck!  While you are at
  1762.   it, turn on the sound with the "X". This way you'll at least hear it
  1763.   coming!
  1764.  
  1765.   Different Lorenz attractors can be created using different parameters.
  1766.   Four parameters are used. The first is the time-step (dt). The default
  1767.   value is .02. A smaller value makes the plotting go slower; a larger
  1768.  
  1769.  
  1770.                                        30
  1771.  
  1772.   value is faster but rougher. A line is drawn to connect successive orbit
  1773.   values. The 2nd, third, and fourth parameters are coefficients used in
  1774.   the differential equation (a, b, and c). The default values are 5, 15,
  1775.   and 1. Try changing these a little at a time to see the result.
  1776.  
  1777.  
  1778.   ROSSLER ATTRACTORS (type=rossler3D)
  1779.  
  1780.   This fractal is named after the German Otto Rossler, a non-practicing
  1781.   medical doctor who approached chaos with a bemusedly philosophical
  1782.   attitude.  He would see strange attractors as philosophical objects.
  1783.   His fractal namesake looks like a band of ribbon with a fold in it. All
  1784.   we can say is we used the same calculus-teacher-defeating trick of
  1785.   multiplying the equations by "dt" to solve the differential equation and
  1786.   generate the orbit.  This time we will skip straight to the orbit
  1787.   generator -if you followed what we did above with Lorenz you can easily
  1788.   reverse engineer the differential equations.
  1789.                xnew = x - y*dt -   z*dt
  1790.                ynew = y + x*dt + a*y*dt
  1791.                znew = z + b*dt + x*z*dt - c*z*dt
  1792.   Default parameters are dt = .04, a = .2, b = .2, c = 5.7
  1793.  
  1794.   HENON ATTRACTORS (type=henon)
  1795.  
  1796.   Michel Henon was an astronomer at Nice observatory in southern France.
  1797.   He came to the subject of fractals via investigations of the orbits of
  1798.   astronomical objects.  The strange attractor most often linked with
  1799.   Henon's name comes not from a differential equation, but from the world
  1800.   of discrete mathematics - difference equations. The Henon map is an
  1801.   example of a very simple dynamic system that exhibits strange behavior.
  1802.   The orbit traces out a characteristic banana shape, but on close
  1803.   inspection, the shape is made up of thicker and thinner parts.  Upon
  1804.   magnification, the thicker bands resolve to still other thick and thin
  1805.   components.  And so it goes forever! The equations that generate this
  1806.   strange pattern perform the mathematical equivalent of repeated
  1807.   stretching and folding, over and over again.
  1808.  
  1809.                xnew =  1 + y - a*x*x
  1810.                ynew =  b*x
  1811.  
  1812.   The default parameters are a=1.4 and b=.3.
  1813.  
  1814.  
  1815.   PICKOVER ATTRACTORS (type=pickover)
  1816.  
  1817.   Clifford A. Pickover of the IBM Thomas J. Watson Research center is such a
  1818.   creative source for fractals that we attach his name to this one only with
  1819.   great trepidation.  Probably tomorrow he'll come up with another one and
  1820.   we'll be back to square one trying to figure out a name!
  1821.  
  1822.   This one is the three dimensional orbit defined by:
  1823.                xnew = sin(a*y) - z*cos(b*x)
  1824.                ynew = z*sin(c*x) - cos(d*y)
  1825.                znew = sin(x)
  1826.   Default parameters are: a = 2.24, b = .43, c = -.65, d = -2.43
  1827.  
  1828.  
  1829.                                        31
  1830.  
  1831.   GINGERBREADMAN FRACTAL (type=gingerbreadman)
  1832.  
  1833.   This simple fractal is a charming example stolen from "Science of
  1834.   Fractal Images", p. 149.  Look closely, and you will see that the
  1835.   gingerbreadman contains infinitely many copies of himself at all
  1836.   different scales.
  1837.  
  1838.                xnew = 1 - y + |x|
  1839.                ynew = x
  1840.  
  1841.   There are no parameters.
  1842.  
  1843.  
  1844.   TEST (type=test)
  1845.  
  1846.   This is a stub that we (and you!) use for trying out new fractal types.
  1847.   "Type=test" fractals make use of FRACTINT's structure and features for
  1848.   whatever code is in the routine 'testpt()' (located in the small source
  1849.   file TESTPT.C) to determine the color of a particular pixel.
  1850.  
  1851.   If you have a favorite fractal type that you believe would fit nicely
  1852.   into FRACTINT, just rewrite the C function in TESTPT.C (or use the
  1853.   prototype function there, which is a simple M-set implementation) with
  1854.   an algorithm that computes a color based on a point in the complex
  1855.   plane.
  1856.  
  1857.   After you get it working, send your code to one of the authors and we
  1858.   might just add it to the next release of FRACTINT, with full credit to
  1859.   you. Our criteria are: 1) an interesting image and 2) a formula
  1860.   significantly different from types already supported. (Bribery may also
  1861.   work. THIS author is completely honest, but I don't trust those other
  1862.   guys.) Be sure to include an explanation of your algorithm and the
  1863.   parameters supported, preferably formatted as you see here to simplify
  1864.   folding it into the documentation.
  1865.  
  1866.  
  1867.   FORMULA (type=formula)
  1868.  
  1869.   Fractint now has a new 'type=formula' fractal type.  This is a "roll-
  1870.   your-own" fractal interpreter - you don't even need a compiler!
  1871.  
  1872.   To run a "type=formula" fractal, you first need to build a text file
  1873.   containing formulas (there's a sample file - FRACTINT.FRM - included
  1874.   with this distribution).  When you select the "formula" fractal type,
  1875.   you are prompted first for the name of your file.  Then, after the
  1876.   program locates the file and scans it for formulas, you are prompted for
  1877.   the formula name you wish to run.  After prompting for any parameters,
  1878.   the formula is parsed for syntax errors and then the fractal is
  1879.   generated.
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.                                        32
  1889.  
  1890.   There are also two new command-line options that work with type=formula
  1891.   ("formulafile=" and "formulaname=") if you are using this new fractal
  1892.   type in batch mode.
  1893.  
  1894.   (the following documentation is supplied by Mark Peterson, who wrote the
  1895.   formula interpreter):
  1896.  
  1897.   Formula fractals allow you to create your own fractal formulas.  The
  1898.   general format is:
  1899.  
  1900.      Mandelbrot(XAXIS) { z = Pixel:  z = sqr(z) + pixel, |z| <= 4 }
  1901.         |         |          |                |              |
  1902.        Name     Symmetry    Initial         Iteration       Bailout
  1903.                             Condition                       Criteria
  1904.  
  1905.   Initial conditions are set, then the iterations performed until the
  1906.   bailout criteria is true or 'z' turns into a periodic loop.
  1907.  
  1908.   All variables are created automatically by their usage and treated as
  1909.   complex.  If you declare 'v = 2' then the variable 'v' is treated as a
  1910.   complex with an imaginary value of zero.
  1911.  
  1912.             Predefined Variables (x, y)
  1913.             --------------------------------------------
  1914.             z              used for periodicity checking
  1915.             p1             parameters 1 and 2
  1916.             p2             parameters 3 and 4
  1917.             pixel          screen coordinates
  1918.  
  1919.             Precedence
  1920.             --------------------------------------------
  1921.             1              sin(), cos(), sinh(), cosh(), sqr(),
  1922.                            log(), exp(), abs(), conj(), real(),
  1923.                            imag()
  1924.             2              - (negation), ^ (power)
  1925.             3              * (multiplication), / (division)
  1926.             4              + (addition), - (subtraction)
  1927.             5              = (assignment)
  1928.             6              < (less than), <= (less than or equal to)
  1929.  
  1930.   Precedence may be overridden by use of parenthesis.  Note the modulus
  1931.   squared operator |z| is also parenthetic and always sets the imaginary
  1932.   component to zero.  This means 'c * |z - 4|' first subtracts 4 from z,
  1933.   calculates the modulus squared then multiplies times 'c'.  Nested
  1934.   modulus squared operators require overriding parenthesis:
  1935.  
  1936.             c * |z + (|pixel|)|
  1937.  
  1938.   The formulas are performed using either integer or floating point
  1939.   mathematics depending on the type of math you have setup.  If you do
  1940.   not have an FPU then type MPC math is performed in lieu of traditional
  1941.   floating point.
  1942.  
  1943.   Remember that when using integer math there is a limited dynamic
  1944.   range, so what you think may be a fractal could really be just a
  1945.  
  1946.  
  1947.                                        33
  1948.  
  1949.   limitation of the integer math range.  God may work with integers, but
  1950.   His dynamic range is many orders of magnitude greater than our puny 32
  1951.   bit mathematics!  Always verify with the floating point.
  1952.  
  1953.  
  1954.   JULIBROTS (type=julibrot)
  1955.  
  1956.   (the following documentation is supplied by Mark Peterson, who "invented"
  1957.   the Julibrot algorithm)
  1958.  
  1959.   There is a very close relationship between the Mandelbrot set and
  1960.   Julia sets of the same equation.  To draw a Julia set you take the
  1961.   basic equation and vary the initial value according to the two
  1962.   dimensions of screen leaving the constant untouched.  This method
  1963.   diagrams two dimensions of the equation, 'x' and 'iy', which I refer
  1964.   to as the Julia x and y.
  1965.  
  1966.        z(0) = screen coordinate (x + iy)
  1967.        z(1) = (z(0) * z(0)) + c, where c = (a + ib)
  1968.        z(2) = (z(1) * z(0)) + c
  1969.        z(3) = . . . .
  1970.  
  1971.   The Mandelbrot set is a composite of all the Julia sets.  If you take
  1972.   the center pixel of each Julia set and plot it on the screen
  1973.   coordinate corresponding to the value of c, a + ib, then you have the
  1974.   Mandelbrot set.
  1975.  
  1976.        z(0) = 0
  1977.        z(1) = (z(0) * z(0)) + c, where c = screen coordinate (a + ib)
  1978.        z(2) = (z(1) * z(1)) + c
  1979.        z(3) = . . . .
  1980.  
  1981.   I refer to the 'a' and 'ib' components of 'c' as the Mandelbrot 'x'
  1982.   and 'y'.
  1983.  
  1984.   All the 2 dimensional Julia sets correspond to a single point on the 2
  1985.   dimensional Mandelbrot set, making a total of 4 dimensions associated with
  1986.   our equation.  Visualizing 4 dimensional objects is not as difficult as it
  1987.   may sound at first if you consider we live in a 4 dimensional world.  The
  1988.   room around you is three dimensions and as you read this text you are
  1989.   moving through the fourth dimension of time. You and everything around your
  1990.   are 4 dimensional objects - which is to say 3 dimensional objects moving
  1991.   through time.  We can think of the 4 dimensions of our equation in the same
  1992.   manner, this is as a 3 dimensional object evolving over time - sort of a 3
  1993.   dimensional fractal movie.  The fun part of it is you get to pick the
  1994.   dimension representing time!
  1995.  
  1996.   To construct the 4 dimensional object into something you can view on the
  1997.   computer screen you start with the simple 2 dimensions of the Julia set.
  1998.   I'll treat the two Julia dimensions as the spatial dimensions of height and
  1999.   width, and the Mandelbrot 'y' dimension as the third spatial dimension of
  2000.   depth.  This leaves the Mandelbrot 'x' dimension as time.  Draw the Julia
  2001.   set associated with the Mandelbrot coordinate (-.83, -.25), but instead of
  2002.   setting the color according to the iteration level it bailed out on, make
  2003.   it a two color drawing where the pixels are black for iteration levels less
  2004.  
  2005.  
  2006.                                        34
  2007.  
  2008.   than 30, and another color for iteration levels greater than or equal to
  2009.   30.  Now increment the Mandelbrot 'y' coordinate by a little bit, say
  2010.   (-.83, -.2485), and draw another Julia set in the same manner using a
  2011.   different color for bailout values of 30 or greater.  Continue doing this
  2012.   until you reach (-.83, .25).  You now have a three dimensional
  2013.   representation of the equation at time -.83.  If you make the same drawings
  2014.   for points in time before and after -.83 you can construct a 3 dimensional
  2015.   movie of the equation which essentially is a full 4 dimensional
  2016.   representation.
  2017.  
  2018.   In the Julibrot fractal available with this release of FRACTINT the spatial
  2019.   dimensions of height and width are always the Julia dimensions. The
  2020.   dimension of depth is determined by the Mandelbrot coordinates.  The
  2021.   program will consider the dimension of depth as the line between the two
  2022.   Mandelbrot points.  To draw the image in our previous example you would
  2023.   set the 'From Mandelbrot' to (-.83, .25) and the 'To Mandelbrot' as (-.83,
  2024.   -.25).  If you set the number of 'z' pixels to 128 then the program will
  2025.   draw the 128 Julia sets found between Mandelbrot points (-.83, .25) and
  2026.   (-.83, -.25).  To speed things up the program doesn't actually calculate
  2027.   ALL the coordinates of the Julia sets.  It starts with the a pixel a the
  2028.   Julia set closest to the observer and moves into the screen until it either
  2029.   reaches the required bailout or the limit to the range of depth.  Zooming
  2030.   can be done in the same manner as with other fractals.  The visual effect
  2031.   (with other values unchanged) is similar to putting the boxed section under
  2032.   a pair of magnifying glasses.
  2033.  
  2034.   The variable associated with penetration level is the level of bailout
  2035.   there you decide to make the fractal solid.  In other words all bailout
  2036.   levels less than the penetration level are considered to be transparent,
  2037.   and those equal or greater to be opaque.  The farther away the apparent
  2038.   pixel is the dimmer the color.
  2039.  
  2040.   The remainder of the parameters are needed to construct the red/blue
  2041.   picture so that the fractal appears with the desired depth and proper 'z'
  2042.   location.  With the origin set to 8 inches beyond the screen plane and the
  2043.   depth of the fractal at 8 inches the default fractal will appear to start
  2044.   at 4 inches beyond the screen and extend to 12 inches if your eyeballs are
  2045.   2.5 inches apart and located at a distance of 24 inches from the screen.
  2046.   The screen dimensions provide the reference frame.
  2047.  
  2048.   To the human eye blue appears brighter than red.  The Blue:Red ratio is
  2049.   used to compensate for this fact.  If the image appears reddish through the
  2050.   glasses raise this value until the image appears to be in shades of gray.
  2051.   If it appears bluish lower the ratio.
  2052.  
  2053.   Julibrots can only be shown in 256 red/blue colors for viewing in either
  2054.   stereo-graphic (red/blue funny glasses) or gray-scaled.  FRACTINT
  2055.   automatically loads either GLASSES1.MAP or ALTERN.MAP as appropriate.
  2056.  
  2057.   DIFFUSION LIMITED AGGREGATION (type=diffusion)
  2058.  
  2059.   This type begins with a single point in the center of the screen.
  2060.   Subsequent points move around randomly until coming into contact with the
  2061.   first point, at which time their locations are fixed and they are colored
  2062.   randomly.  This process repeats until the fractals reaches the edge of the
  2063.  
  2064.  
  2065.                                        35
  2066.  
  2067.   screen.  Use the show orbits function to see the points' random motion.
  2068.  
  2069.   One unfortunate problem is that on a large screen, this process will
  2070.   tend to take eons.  To speed things up, the points are restricted to a box
  2071.   around the initial point.  The first and only parameter to diffusion
  2072.   contains the size of the border between the fractal and the edge of the
  2073.   box.  If you make this number small, the fractal will look more solid and
  2074.   will be generated more quickly.
  2075.  
  2076.   Diffusion was inspired by a Scientific American article a couple of years
  2077.   back which includes actual pictures of real physical phenomena that behave
  2078.   like this.
  2079.  
  2080.   Thanks to Adrian Mariano for providing the diffusion code and documentation.
  2081.  
  2082.  
  2083.   MAGNETIC FRACTALS (type=magnet1m,magnet1j,magnet2m,magnetic2j)
  2084.  
  2085.   These fractals use formulae derived from the study of hierarchical
  2086.   lattices, in the context of magnetic renormalisation transformations.
  2087.   This kinda stuff is useful in an area of theoretical physics that deals
  2088.   with magnetic phase-transitions (predicting at which temperatures a
  2089.   given substance will be magnetic, or non-magnetic).  In an attempt to
  2090.   clarify the results obtained for Real temperatures (the kind that you
  2091.   and I can feel), the study moved into the realm of Complex Numbers,
  2092.   aiming to spot Real phase-transitions by finding the intersections of
  2093.   lines representing Complex phase-transitions with the Real Axis.  The
  2094.   first people to try this were two physicists called Yang and Lee, who
  2095.   found the situation a bit more complex than first expected, as the
  2096.   phase boundaries for Complex temperatures are (surprise !) fractals.
  2097.  
  2098.   And that's all the technical (?) background you're getting here !  For
  2099.   more details (are you SERIOUS ?!) read "The Beauty of Fractals".  When
  2100.   you understand it all, you might like to re-write this section, before
  2101.   you start your new job as a professor of theoretical physics...
  2102.  
  2103.   In Fractint terms, the important bits of the above are "Fractals",
  2104.   "Complex Numbers", "Formulae", and "The Beauty of Fractals".  Lifting
  2105.   the Formulae straight out of the Book and iterating them over the
  2106.   Complex plane (just like the Mandelbrot set) produces Fractals.
  2107.  
  2108.   The formulae are a bit more complicated than the Z^2+C used for the
  2109.   Mandelbrot Set, that's all.  They are :
  2110.  
  2111.                  /  Z^2 + (C-1)  \
  2112.       MAGNET1 : |  -------------  | ^ 2
  2113.                  \  2*Z + (C-2)  /
  2114.                  /      Z^3 + 3*(C-1)*Z + (C-1)*(C-2)      \
  2115.       MAGNET2 : |  ---------------------------------------  | ^ 2
  2116.                  \  3*(Z^2) + 3*(C-2)*Z + (C-1)*(C-2) - 1  /
  2117.  
  2118.   These aren't quite as horrific as they look (oh yeah ?!) as they only
  2119.   involve two variables (Z and C), but cubing things, doing division, and
  2120.   eventually squaring the result (all in Complex Numbers) don't exactly
  2121.   spell S-p-e-e-d !  These are NOT the fastest fractals in Fractint !
  2122.  
  2123.  
  2124.                                        36
  2125.  
  2126.  
  2127.   As you might expect, for both formulae there is a single related
  2128.   Mandelbrot-type set (magnet1m, magnet2m) and an infinite number of
  2129.   related Julia-type sets (magnet1j, magnet2j), with the usual toggle
  2130.   between the corresponding Ms and Js via the space-bar.
  2131.  
  2132.   If you fancy delving into the Julia-types by hand, you will be prompted
  2133.   for the Real and Imaginary parts of the parameter denoted by C.  The
  2134.   result is symmetrical about the Real axis (and therefore the initial
  2135.   image gets drawn in half the usual time) if you specify a value of Zero
  2136.   for the Imaginary part of C.
  2137.  
  2138.   Fractint Historical Note:  Another complication (besides the formulae)
  2139.   in implementing these fractal types was that they all have a finite
  2140.   attractor (1.0 + 0.0i), as well as the usual one (Infinity).  This fact
  2141.   spurred the development of Finite Attractor logic in Fractint.  Without
  2142.   this code you can still generate these fractals, but you usually end up
  2143.   with a pretty boring image that is mostly deep blue "lake", courtesy of
  2144.   Fractint's standard Periodicity Checking.  See the Finite Attractors
  2145.   section for more information on this aspect of Fractint internals.
  2146.  
  2147.   (Thanks to Kevin Allen for Magnetic type documentation above).
  2148.  
  2149.   "3D" IMAGES
  2150.  
  2151.   FRACTINT can now restore images in "3D". Important: we use quotation
  2152.   marks because it does not CREATE images of 3D fractal objects (there
  2153.   are such, but we're not there yet.) Instead, it restores .GIF images
  2154.   (or .FRA images -- see Sec. 4) as a 3D PROJECTION or STEREO IMAGE
  2155.   PAIR. The iteration values you've come to know and love, the ones that
  2156.   determine pixel colors, are translated into "height" so that your
  2157.   saved screen becomes a landscape viewed in perspective. You can even
  2158.   wrap the landscape onto a sphere for realistic-looking planets and
  2159.   moons that never existed outside your PC!
  2160.  
  2161.   We suggest starting with a saved plasma-cloud screen. Hit <3> in main
  2162.   command mode to begin the process, enter the filename. If no extension
  2163.   is specified, a .GIF extension is assumed. If no .GIF is found, it
  2164.   will assume a .GIF extension. If no match is then found, if will
  2165.   attempt to match the file with no extension. Then it will prompt you
  2166.   for the video mode if appropriate.
  2167.  
  2168.   Now, you'll be bombarded with a long series of options. Not to worry:
  2169.   all of them have defaults chosen to yield an acceptable starting
  2170.   image, so the first time out just pump your way through with the
  2171.   <Enter> key. When you enter a different value for any option, that
  2172.   becomes the default value the next time you hit <3>, so you can change
  2173.   one option at a time until you get what you want. Generally <ESC> will
  2174.   take you back to the previous screen.
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.                                        37
  2184.  
  2185.   3D MODE SELECTION
  2186.  
  2187.   After the filename prompt and video mode check, you're presented with
  2188.   a "3d Mode Selection" screen. Each selection will have defaults
  2189.   entered if you wish to change any of the defaults use the cursor keys
  2190.   to move through the menu. When you're satisfied press <Enter>.
  2191.  
  2192.   Here are the options and what they do:
  2193.  
  2194.   Preview Mode:
  2195.  
  2196.        Preview mode provides a rapid look at your transformed image
  2197.        using by skipping a lot of rows and filling the image in. Good
  2198.        for quickly discovering the best parameters. Let's face it, the
  2199.        FRACTINT authors most famous for "blazingly fast" code *DIDN'T*
  2200.        write the 3D routines!
  2201.  
  2202.   Show Box:
  2203.  
  2204.        If you have selected Preview Mode you have another option to
  2205.        worry about. This is the option to show the image box in scaled
  2206.        and rotated coordinates x, y, and z. The box only appears in
  2207.        rectangular transformations and shows how the final image will be
  2208.        oriented. If you select light source in the next screen, it will
  2209.        also show you the light source vector so you can tell where the
  2210.        light is coming from in relation to your image. Sorry no head or
  2211.        tail on the vector yet.
  2212.  
  2213.   Coarseness:
  2214.  
  2215.        This sets how many divisions the image will be divided into
  2216.        in the y direction, if you select preview mode above, or
  2217.        grid fill in the "Select Fill Type" screen next.
  2218.  
  2219.   Spherical Projection:
  2220.  
  2221.        The next question asks if you want a sphere projection. This will
  2222.        take  your image and map it onto a plane if you answer "no" or a
  2223.        sphere if you answer "yes" as described above. Try  it and you'll
  2224.        see what we mean.
  2225.  
  2226.   Stereo:
  2227.  
  2228.        Stereo sound in FRACTINT? Well, not yet. FRACTINT now allows
  2229.        you to create 3D images for use with red/blue glasses like
  2230.        3D comics you may have seen, or images like Captain EO.
  2231.  
  2232.        Option 0 is normal old 3D you can look at with just your
  2233.        eyes.
  2234.  
  2235.        Options 1 and 2 require the special red/blue-green glasses.
  2236.        They are meant to be viewed right on the screen or on a
  2237.        color print off of the screen. The image can be made to
  2238.        hover entirely or partially in front of the screen. Great
  2239.        fun! These two options give a gray scale image when viewed.
  2240.  
  2241.  
  2242.                                        38
  2243.  
  2244.  
  2245.        Option 1 gives 64 shades of gray but with half the spatial
  2246.        resolution you have selected. It works by writing the red and
  2247.        blue images on adjacent pixels, which is why it eats half your
  2248.        resolution. In general, we recommend you use this only with
  2249.        resolutions above 640x350. Use this mode for continuous potential
  2250.        landscapes where you *NEED* all those shades.
  2251.  
  2252.        Option "2" gives you full spatial resolution but with only 16
  2253.        shades of gray. If the red and blue images overlap, the colors
  2254.        are mixed. Good for wire-frame images (we call them surface grids),
  2255.        lorenz3d and ifs3d. Works fine in 16 color modes.
  2256.  
  2257.        Option 3 is for creating stereo pair images for view later
  2258.        with more specialized equipment. It allows full color images
  2259.        to be presented in glorious stereo. The left image presented
  2260.        on the screen first. You may photograph it or save it. Then
  2261.        the second image is presented, you may do the same as the
  2262.        first image. You can then take the two images and convert
  2263.        them to a stereo image pair as outlined by Bruce Goren (see
  2264.        below). When you are satisfied with your selections press
  2265.        enter to go to the next screen which will appear below this
  2266.        one.
  2267.  
  2268.   SELECT FILL TYPE Screen
  2269.  
  2270.   These options exist because in the course of the 3D projection,
  2271.   portions of the original image may be stretched to fit the new
  2272.   surface. Points of an image that formerly were right next to each
  2273.   other, now may have a space between them. These options generally
  2274.   determine what to do with the space between the mapped dots.
  2275.  
  2276.   For an illustration, pick the second option "just draw the points",
  2277.   which just maps points to corresponding points. Generally this will
  2278.   leave empty space between many of the points. Therefore you can choose
  2279.   various algorithms that "fill in" the space between the points in
  2280.   various ways.
  2281.  
  2282.   Now, try the first option "make a surface grid." This option will make
  2283.   a grid of the surface which is as many divisions in the original "y"
  2284.   direction as was set in "coarse" in the first screen. It is very fast,
  2285.   and can give you a good idea what the final relationship of parts of
  2286.   your picture will look like.
  2287.  
  2288.   Try the second option, "connect the dots (wire frame)", then "surface
  2289.   fills - (colors interpolated)" and "(colors not interpolated), the
  2290.   general favorite of the authors. Solid fill, while it reveals the
  2291.   pseudo-geology under your pseudo-landscape, inevitably takes longer.
  2292.  
  2293.   Now try the light source fill types. These two algorithms allow
  2294.   you to position the "sun" over your "landscape." Each pixel is
  2295.   colored according to the angle the surface makes with an
  2296.   imaginary light source. You will be asked to enter the three
  2297.   coordinates of the vector pointing toward the light in one of the
  2298.   following screens.
  2299.  
  2300.  
  2301.                                        39
  2302.  
  2303.  
  2304.   Light source before transformation calculates the illumination
  2305.   before doing the coordinate transformations, and is slightly
  2306.   faster. If you generate a sequence of images where one rotation
  2307.   is progressively changed, the effect is as if the image and the
  2308.   light source are fixed in relation to each other and you orbit
  2309.   around the image.
  2310.  
  2311.   Light source after transformation applies the transformations
  2312.   first, then calculates the illumination. If you generate a
  2313.   sequence of images with progressive rotation as above the effect
  2314.   is as if you and the light source are fixed and the object is
  2315.   rotating.
  2316.  
  2317.   For ease of discussion we will refer to the following fill types
  2318.   by these numbers:
  2319.          1 - surface grid
  2320.          2 - (default) - no fill at all - just draw the dots.
  2321.          3 - wire frame - joins points with lines
  2322.          4 - surface fill - (colors interpolated)
  2323.          5 - surface fill - (interpolation turned off)
  2324.          6 - solid fill - draws lines from the "ground" up to the point
  2325.          7 - surface fill with light model - calculated before 3D transforms
  2326.          8 - surface fill with light model - calculated after 3D transforms
  2327.  
  2328.   Types 4, 7, and 8 interpolate colors when filling, making a very
  2329.   smooth fill if the palette is continuous. This may not be desirable if
  2330.   the palette is not continuous. Type 5 is the same as type 4 with
  2331.   interpolation turned off. You might want to use fill type 5, for
  2332.   example, to project a .GIF photograph onto a sphere. With type 4, you
  2333.   might see the filled-in points, since chances are the palette is not
  2334.   continuous; type 5 fills those same points in with the colors of
  2335.   adjacent pixels. However, for most fractal images, fill type 4 works
  2336.   better.
  2337.  
  2338.  
  2339.   STEREO 3D VIEWING
  2340.  
  2341.   If you selected Stereo option 1, 2 or 3 you will be presented another
  2342.   screen to select from. We suggest you definitely use defaults at first
  2343.   on this one.
  2344.  
  2345.   Funny Glasses Parameters
  2346.  
  2347.   When you look at an image with both eyes, each eye sees the image in
  2348.   slightly different perspective because they see it from different
  2349.   places.
  2350.  
  2351.   The first selection you must make is ocular separation, the distance
  2352.   the between the viewers eyes. This is measured as a % of screen and is
  2353.   an important factor in setting the position of the final stereo image
  2354.   in front of or behind the CRT Screen.
  2355.  
  2356.   The second selection is convergence, also as a % of screen. This
  2357.   tends to move the image forward and back to set where it floats.
  2358.  
  2359.  
  2360.                                        40
  2361.  
  2362.   More positive values move the image towards the viewer. The value
  2363.   of this parameter needs to be set in conjunction with the setting of
  2364.   ocular separation and the perspective distance. It directly adjusts
  2365.   the overall separation of the two stereo images. Beginning anaglyphers
  2366.   love to create images floating mystically in front of the screen, but
  2367.   grizzled old 3D veterans look upon such antics with disdain, and
  2368.   believe the image should be safely inside the monitor where it
  2369.   belongs!
  2370.  
  2371.   Left and Right Red and Blue image crop (% of screen also) help
  2372.   keep the visible part of the right image the same as the visible
  2373.   part of the left by cropping them. If there is too much in the
  2374.   field of either eye that the other doesn't see, the stereo effect
  2375.   can be ruined.
  2376.  
  2377.   Red and Blue brightness factor. The generally available red/blue-
  2378.   green glasses, made for viewing on ink on paper and not the light
  2379.   from a CRT, let in more red light in the blue-green lens than we
  2380.   would like. This leaves a ghost of the red image on the blue-
  2381.   green image (definitely not desired in stereo images). We have
  2382.   countered this by adjusting the intensity of the red and blue
  2383.   values on the CRT. In general you should not have to adjust this.
  2384.  
  2385.   The final entry is Map file name. If you have a special map file
  2386.   you want to use for Stereo 3D this is the place to enter its
  2387.   name. Generally glasses1.map is for type 1 (alternating pixels), and
  2388.   glasses2.map is for type 2 (superimposed pixels). Grid.map is great
  2389.   for wire-frame images using 16 color modes.
  2390.  
  2391.  
  2392.  
  2393.   RECTANGULAR COORDINATE TRANSFORMATION
  2394.  
  2395.   The first entries are rotation values around the X, Y, and Z axes. Think
  2396.   of your starting image as a flat map: the X value tilts the bottom of
  2397.   your monitor towards you by X degrees, the Y value pulls the left side
  2398.   of the monitor towards you, and the Z value spins it counter-clockwise.
  2399.   Note that these are NOT independent rotations: the image is rotated
  2400.   first along the X-axis, then along the Y-axis, and finally along the Z-
  2401.   axis. Those are YOUR axes, not those of your (by now hopelessly skewed)
  2402.   monitor. All rotations actually occur through the center of the original
  2403.   image.
  2404.  
  2405.   Then there are three scaling factors in per cent. Initially, leave the X
  2406.   and Y axes alone and play with Z, now the vertical axis, which
  2407.   translates into surface "roughness."  High values of Z make spiky, on-
  2408.   beyond-Alpine mountains and improbably deep valleys; low values make
  2409.   gentle, rolling terrain. Negative roughness is legal: if you're doing an
  2410.   M-set image and want Mandelbrot Lake to be below the ground, instead of
  2411.   eerily floating above, try a roughness of about -30%.
  2412.  
  2413.   Next we need a water level -- really a minimum-color value that performs
  2414.   the function "if (color < waterlevel) color = waterlevel". So it plots
  2415.   all colors "below" the one you choose at the level of that color, with
  2416.   the effect of filling in "valleys" and converting them to "lakes."
  2417.  
  2418.  
  2419.                                        41
  2420.  
  2421.  
  2422.   Now we enter a perspective distance, which you can think of as the
  2423.   "distance" from your eye to the image. A zero value (the default) means
  2424.   no perspective calculations, which allows use of a faster algorithm.
  2425.  
  2426.   For non-zero values, picture a box with the original X-Y plane of your
  2427.   flat fractal on the bottom, and your 3D fractal inside. A perspective
  2428.   value of 100% places your eye right at the edge of the box and yields
  2429.   fairly severe distortion, like a close view through a wide-angle lens.
  2430.   200% puts your eye as far from the front of the box as the back is
  2431.   behind. 300% puts your eye twice as far from the front of the box as the
  2432.   back is, etc. Try about 150% for reasonable results. Much larger values
  2433.   put you far away for even less distortion, while values smaller than
  2434.   100% put you "inside" the box. Try larger values first, and work your
  2435.   way in.
  2436.  
  2437.   Next, you are prompted for two types of X and Y shifts (now back in the
  2438.   plane of your screen) that let you move the final image around if you'd
  2439.   like to re-center it. The first set, x and y shift with perspective, move
  2440.   the image and the effect changes the perspective you see. The second set,
  2441.   "x and y adjust without perspective", move the image but do not change
  2442.   perspective.  They are used just for positioning the final image on the
  2443.   screen.
  2444.  
  2445.   Now,  you are asked for a range of "transparent" colors, if any. This
  2446.   option is most useful when using the <O>verlay command below. Enter the
  2447.   color range (minimum and maximum value) for which you do not want to
  2448.   overwrite whatever may already be on the screen. The default is no
  2449.   transparency (overwrite everything).
  2450.  
  2451.   Now, for the final option. This one will smooth the transition between
  2452.   colors by randomizing them and reduce the banding that occurs with some
  2453.   maps. Select the value of randomize to between 0 (for no effect) and 7
  2454.   (to randomize your colors almost beyond use). 3 is a good starting point.
  2455.  
  2456.   Well, OK, we lied. If you selected one of the light source fill options,
  2457.   there are still MORE options.
  2458.  
  2459.   If you have selected a fill type which uses light source, you can select
  2460.   the final image to be either in monochrome or full color. 0 selects
  2461.   monochrome and 1 selects glorious full color.
  2462.  
  2463.   Thats all for this screen. Press enter and the next and final screen will
  2464.   appear (honestly!).
  2465.  
  2466.  
  2467.   Light Source Parameters
  2468.  
  2469.   This one deals with all the aspects of light source.
  2470.  
  2471.   You must chose the direction of the light from the light source. This
  2472.   will be scaled in the x, y, and z directions the same as the image. For
  2473.   example, 1,1,3 positions the light to come from the lower right front
  2474.   of the screen in relation to the untransformed image. It is important
  2475.   to remember that these coordinates are scaled the same as your image.
  2476.  
  2477.  
  2478.                                        42
  2479.  
  2480.   Thus, "1,1,1" positions the light to come from a direction of equal
  2481.   distances to the right, below and in front of each pixel on the original
  2482.   image. However, if the x,y,z scale is set to 90,90,30 the result will be
  2483.   from equal distances to the right and below each pixel but from only 1/3
  2484.   the distance in front of the screen ie. it will be low in the sky, say,
  2485.   afternoon or morning.
  2486.  
  2487.   Then you are asked for a smoothing factor. Unless you used continuous
  2488.   potential (see Sec. 4) when generating the starting image, the
  2489.   illumination when using light source fills may appear "sparkly", like
  2490.   a sandy beach in bright sun. A smoothing factor of 2 or 3 will allow you
  2491.   to see the large-scale shapes better.
  2492.  
  2493.   This is primarily useful when doing light source fill types with plasma
  2494.   clouds. But if your fractal is not a plasma cloud and has features with
  2495.   sharply defined boundaries (e.g. Mandelbrot Lake), the smoothing may
  2496.   cause the colors to run. This is a feature, not a bug. (A copyrighted
  2497.   response of [your favorite commercial software company here], used by
  2498.   permission.)
  2499.  
  2500.   The ambient option sets the minimum light value a surface has if it has
  2501.   no direct lighting at all. All light values are scaled from this value to
  2502.   white. This effectively adjusts the depth of the shadows and sets the
  2503.   overall contrast of the image.
  2504.  
  2505.   If you selected the full color option, you have a few more choices.
  2506.   The next is the haze factor. Set this to make distant objects more hazy.
  2507.   Close up objects will have little effect, distant objects will have most.
  2508.   0 disables the function. 100 is the maximum effect, the farthest objects
  2509.   will be lost in the mist. Currently, this does not really use distance
  2510.   from the viewer, we cheat and use the y value of the original image. So
  2511.   the effect really only works if the y-rotation (set earlier) is between
  2512.   +/- 30.
  2513.  
  2514.   Finally, absolutely the last option (this time we mean it): you can chose
  2515.   the name under which to save your light file. If you have a RAM disk
  2516.   handy, you might want to create the file on it for speed, so include its
  2517.   full path name in this option. If you have set warn=yes then the file
  2518.   name will be incremented to avoid over-writing previous files. By the way,
  2519.   the background on the full color file is sky blue instead of black.
  2520.  
  2521.   You'll probably want to adjust the final colors for monochrome fill types
  2522.   using light source via color cycling. Try one of the more continuous
  2523.   palettes (<F8> through <F10>), or load the GRAY palette with the
  2524.   <A>lternate-map command.
  2525.  
  2526.   Note that any image loaded up in 3D is treated as if it were a plasma
  2527.   cloud: we have NO idea how to retain the ability to zoom and pan around
  2528.   a 3D image that has been twisted, stretched, perspective-ized, and
  2529.   water-leveled. Actually, we do, but it involves the kind of hardware that
  2530.   Industrial Light & Magic, Pixar et al. use for feature films. So if you'd
  2531.   like to send us a check equivalent to George Lucas' net from the "Star
  2532.   Wars" series...
  2533.  
  2534.  
  2535.  
  2536.  
  2537.                                        43
  2538.  
  2539.   Now, lie down for a while in a quiet room with a damp washcloth on your
  2540.   forehead. Feeling better? Good -- because it's time to go back almost to
  2541.   the top of the 3D options and just say yes to:
  2542.  
  2543.   SPHERICAL PROJECTION
  2544.  
  2545.   Picture a globe lying on its side, "north" pole to the right. (It's our
  2546.   planet, and we'll position it the way we like.) You will be mapping the
  2547.   X and Y axes of the starting image to latitude and longitude on the
  2548.   globe, so that what was a horizontal row of pixels follows a line of
  2549.   longitude. The defaults exactly cover the hemisphere facing you, from
  2550.   longitude 180 degrees (top) to 0 degrees (bottom) and latitude -90
  2551.   (left) to latitude 90 (right). By changing them you can map the image to
  2552.   a piece of the hemisphere or wrap it clear around the globe.
  2553.  
  2554.   The next entry is for a radius factor that controls the over-all size of
  2555.   the globe. All the rest of the entries are the same as in the landscape
  2556.   projection. You may want less surface roughness for a plausi-ble look,
  2557.   unless you prefer small worlds with big topography, a la "The Little
  2558.   Prince."
  2559.  
  2560.   WARNING: When the "construction" process begins at the edge of the globe
  2561.   (default) or behind it, it's plotting points that will be hidden by
  2562.   subsequent points as the process sweeps around the sphere toward you.
  2563.   Our nifty hidden-point algorithms "know" this, and the first few dozen
  2564.   lines may be invisible unless a high mountain happens to poke over the
  2565.   horizon. If you start a spherical projection and the screen stays black,
  2566.   wait for a while (a longer while for higher resolution or fill type 6)
  2567.   to see if points start to appear. Would we lie to you? If you're still
  2568.   waiting hours later, first check that the power's still on, then
  2569.   consider a faster system.
  2570.  
  2571.  
  2572.   Once you're familiar with the effects of the 3D option values you have a
  2573.   variety of options on how to specify them. You can specify them all on
  2574.   the command line (there ARE a lot of them so they may not all fit within
  2575.   the DOS command line limits), with an SSTOOLS.INI file, or with a
  2576.   command file.
  2577.  
  2578.   Here's an example for you power FRACTINTers, the command
  2579.  
  2580.             FRACTINT MYFILE SAVENAME=MY3D 3D= BATCH=YES
  2581.  
  2582.   would make FRACTINT load MYFILE.GIF, re-plot it as a 3D landscape
  2583.   (taking all of the defaults), save the result as MY3D.GIF, and exit to
  2584.   DOS. By the time you've come back with that cup of coffee, you'll have a
  2585.   new world to view, if not conquer.
  2586.  
  2587.  
  2588.   3D OVERLAY MODE
  2589.  
  2590.   While the <3> command creates its image on a blank screen, the <O>
  2591.   command draws a second image over an existing displayed image. This
  2592.   image can be any restored image from a <R> command or the result of a
  2593.   just executed <3> command. So you can do a landscape, then hit <O> and
  2594.  
  2595.  
  2596.                                        44
  2597.  
  2598.   choose spherical projection to re-plot that image or another as a moon
  2599.   in the sky above the landscape. <O> can be repeated as many times as
  2600.   you like.
  2601.  
  2602.   It's worth noting that not all that many years ago, one of us watched
  2603.   Benoit Mandelbrot and fractal-graphics wizard Dick Voss creating just
  2604.   such a moon-over-landscape image at IBM's research center in Yorktown
  2605.   Heights, NY. The system was a large and impressive mainframe with
  2606.   floating-point facilities bigger than the average minicomputer, running
  2607.   LBLGRAPH -- what Mandelbrot calls "an independent-minded and often very
  2608.   ill-mannered heap of graphics programs that originated in work by Alex
  2609.   Hurwitz and Jack Wright of IBM Los Angeles."
  2610.  
  2611.   We'd like to salute LBLGRAPH, its successors, and their creators,
  2612.   because it was their graphic output (like "Planetrise over Labelgraph
  2613.   Hill," plate C9 in Mandelbrot's "Fractal Geometry of Nature") that
  2614.   helped turn fractal geometry from a mathematical curiosity into a
  2615.   phenomenon. We'd also like to point out that it wasn't as fast, flexi-
  2616.   ble or pretty as FRACTINT on a 386/16 PC with S-VGA graphics. Now, a lot
  2617.   of the difference has to do with the incredible progress of micro-
  2618.   processor power since then, so a lot of the credit should go to Intel
  2619.   rather than to our highly tuned code. OK, twist our arms -- it IS
  2620.   awfully good code.
  2621.  
  2622.  
  2623.   SPECIAL NOTE FOR CGA OR HERCULES USERS
  2624.  
  2625.   If you are one of those unfortunates with a CGA or Hercules 2-color
  2626.   monochrome graphics, it is now possible for you to make 3D projection
  2627.   images.
  2628.  
  2629.   Try the following unfortunately circuitous approach. Invoke FRACTINT,
  2630.   making sure you have set askvideo=yes. Use a diskvideo mode to create a
  2631.   256 color fractal. You might want to edit the fractint.cfg file to make
  2632.   a diskvideo mode with the same pixel dimensions as your normal video
  2633.   (see "batch=config" command for how to create fractint.cfg). Using the
  2634.   "3" command, enter the file name of the saved 256 color file, say "no"
  2635.   to the "Legal for this machine?" prompt, selecting instead your 2 or 4
  2636.   color mode, and answer the other 3D prompts. You will then see a 3D
  2637.   projection of the fractal. Another example of Stone Soup responsiveness
  2638.   to our fan mail!
  2639.  
  2640.  
  2641.   MAKING TERRAINS
  2642.  
  2643.   If you enjoy using FRACTINT for making landscapes, we now have several
  2644.   new features for you to work with. When doing 3d transformations banding
  2645.   tends to occur because all pixels of a given height end up the same
  2646.   color. Now, colors can be randomized to make the transitions between
  2647.   different colors at different altitudes smoother. Use the new
  2648.   "RANDOMIZE= " variable to accomplish this. If your light source images
  2649.   all look like lunar landscapes since they are all monochrome and have
  2650.   very dark shadows, we now allow you to set the ambient light for
  2651.   adjusting the contrast of the final image. Use the "Ambient= " variable.
  2652.   In addition to being able to create scenes with light sources in
  2653.  
  2654.  
  2655.                                        45
  2656.  
  2657.   monochrome, you can now do it in full color as well. Setting fullcolor=1
  2658.   will generate a Targa-24 file with a full color image which will be a
  2659.   combination of the original colors of the source image (or map file if
  2660.   you select map=something) and the amount of light which reflects off a
  2661.   given point on the surface. Since there can be 256 different colors in
  2662.   the original image and 256 levels of light, you can now generate an
  2663.   image with *lots* of colors. To convert it to a GIF if you can't view
  2664.   Targa files directly, you can use PICLAB, and the following commands:
  2665.  
  2666.           SET PALETTE 256
  2667.           SET CREZ 8
  2668.           TLOAD yourfile.tga
  2669.           MAKEPAL
  2670.           MAP
  2671.           GSAVE yourfile.gif
  2672.           EXIT
  2673.  
  2674.   Using the full color option allows you to also set a haze factor with
  2675.   the "haze= " variable to make more distant objects more hazy.
  2676.  
  2677.   As a default, full color files also have the background set to sky blue.
  2678.   Warning, the files which are created with the full color option are very
  2679.   large, 3 bytes per pixel. So make sure to use a disk with enough space.
  2680.   The file is created using Fractint's disk-video caching, but is always
  2681.   created on real disk (expanded or extended memory is not used.)
  2682.   Try the following settings of the new variables in sequence to get a
  2683.   feel for the effect of each one:
  2684.           ;use this with any filltype
  2685.           map=topo
  2686.           randomize=3; adjusting this smoothes color transitions
  2687.  
  2688.           ;now add this using filltype 5 or 6
  2689.           ambient=20; adjusting this changes the contrast
  2690.           filltype=6
  2691.           smoothing=2; makes the light not quite as granular as the terrain
  2692.  
  2693.           ;now add the following, and this is where it gets slow
  2694.           fullcolor=1; use PICLAB to reduce resulting lightfile to a GIF
  2695.  
  2696.           ;and finally this
  2697.           haze=20; sets the amount of haze for distant objects
  2698.  
  2699.   When full color is being used, the image you see on the screen will
  2700.   represent the amount of light being reflected, not the colors in the
  2701.   final image. Don't be disturbed if the colors look weird, they are an
  2702.   artifact of the process being used. The image being created in the
  2703.   lightfile won't look like the screen.
  2704.  
  2705.   However, if you are worried, hit ESC several times and when FRACTINT
  2706.   gets to the end of the current line it will abort. Your partial image
  2707.   will be there as LIGHT001.TGA or with whatever file name you selected
  2708.   with the lightname option. Convert it as described above and adjust any
  2709.   parameters you are not happy with. Its a little awkward, but all we
  2710.   could do prior to this release.
  2711.  
  2712.  
  2713.  
  2714.                                        46
  2715.  
  2716.  
  2717.   HOW TO MAKE 3D SLIDES
  2718.  
  2719.   Bruce Goren, CIS's resident stereoscopic maven, contributed these tips
  2720.   on what to do with your 3D images (Bruce inspired and prodded us so much
  2721.   we automated much of what follows, allowing both this and actual on
  2722.   screen stereo viewing, but we included it here for reference and a brief
  2723.   tutorial.)
  2724.  
  2725.   "I use a Targa 32 video card and TOPAS graphic software, moving the
  2726.   viewport or imaginary camera left and right to create two separate views
  2727.   of the stationary object in x,y,z, space. The distance between the two
  2728.   views, known as the inter-ocular distance, toe-in or convergence angle,
  2729.   is critical. It makes the difference between good 3-D and headache-
  2730.   generating bad 3-D.
  2731.  
  2732.   "For a 3D fractal landscape, I created and photographed the left and
  2733.   right eye views as if flying by in an imaginary airplane and mounted the
  2734.   film chips for stereo viewing. To make my image, first I generated a
  2735.   plasma cloud based on a color map I calculated to resemble a geological
  2736.   survey map (available on CIS as TARGA.MAP). In the 3D reconstruction, I
  2737.   used a perspective value of 150 and shifted the camera -15 and +15 on
  2738.   the X-axis for the left and right views. All other values were left to
  2739.   the defaults.
  2740.  
  2741.   "The images are captured on a Matrix 3000 film recorder -- basically a
  2742.   box with a high-resolution (1400 lines) black and white TV and a 35mm
  2743.   camera (Konica FS-1) looking at the TV screen through a filter wheel.
  2744.   The Matrix 3000 can be calibrated for 8 different film types, but so far
  2745.   I have only used Kodak Ektachrome 64 daylight for slides and a few print
  2746.   films. I glass mount the film chips myself.
  2747.  
  2748.   "Each frame is exposed three times, once through each of the red, blue,
  2749.   and green filters to create a color image from computer video without
  2750.   the scan-lines which normally result from photographing television
  2751.   screens.  The aspect ratio of the resulting images led me to mount the
  2752.   chips using the 7-sprocket Busch-European Emde masks. The best source of
  2753.   Stereo mounting and viewing supplies I know of is an outfit called Reel
  2754.   3-D Enterprises, Inc. at P.O. Box 2368, Culver City, CA 90231, tel. 213-
  2755.   837-2368. "My platform is an IBM PC/AT crystal-swapped up to 9 MHz. The
  2756.   math co-processor runs on a separate 8-MHz accessory sub-board. The
  2757.   system currently has 6.5 MB of RAM."
  2758.  
  2759.  
  2760.   DISTANCE ESTIMATOR METHOD
  2761.  
  2762.   This is Phil Wilson's implementation of an alternate method for the M
  2763.   and J sets, based on work by mathematician John Milnor and described in
  2764.   "The Science of Fractal Images", p. 198.  While if takes full advantage
  2765.   of your color palette, one of the best uses is in preparing monochrome
  2766.   images for a printer.  Using the 1600x1200x2 disk-video mode and an HP
  2767.   LaserJet, we have produced pictures of quality equivalent to the black
  2768.   and white illustrations of the M-set in "The Beauty of Fractals."
  2769.  
  2770.  
  2771.  
  2772.  
  2773.                                        47
  2774.  
  2775.   The distance estimator method widens very thin "strands" which are part
  2776.   of the "inside" of the set.  Instead of hiding invisibly between pixels,
  2777.   these strands are made one pixel wide.
  2778.  
  2779.   To turn on the distance estimator method with any escape time type
  2780.   fractal, set the "distest" value on the <X> options screen to a nonzero
  2781.   value.  You should use 1 or 2 pass mode - solid guessing and boundary
  2782.   tracing can miss some of the thin strands made visible by distance
  2783.   estimator.  For the highest quality images, "maxiter" should also be set
  2784.   to a high value, say 1000 or so.  You'll probably also want "inside" set
  2785.   to zero, to get a black interior.
  2786.  
  2787.   In color modes, the distance estimator method also produces more evenly
  2788.   spaced contours.  Set "distest" to a higher value for narrower color
  2789.   bands, a lower value for wider ones.  1000 is a good value to start
  2790.   with.
  2791.  
  2792.   Setting "distest" automatically also toggles to floating point mode.
  2793.   When you reset distest back to zero, remember to also turn off floating
  2794.   point mode if you want it off.
  2795.  
  2796.   Unfortunately, images using the distance estimator method can take many
  2797.   hours to calculate even on a fast machine with a coprocessor, especially
  2798.   if a high "maxiter" value is used.  One way of dealing with this is to
  2799.   leave distest turned off while you find and frame an image.  Then hit
  2800.   <B> to save the coordinates to FRABATCH.BAT. Edit the batch file, adding
  2801.   "distest=1", "video=something" to select a high-resolution monochrome
  2802.   disk-video mode, "maxiter=1000", "inside=0" and "batch=yes".  (Watch out
  2803.   for the line exceeding the DOS limit of 120 characters - if it does, use
  2804.   "fractint @filename" in your batch and put the parameters in another
  2805.   file "filename".) Run the batch file when you won't be needing your
  2806.   machine (over the weekend?) and print the resulting .GIF file at your
  2807.   convenience.
  2808.  
  2809.   INVERSION
  2810.  
  2811.   Many years ago there was a brief craze for "anamorphic art": images
  2812.   painted and viewed with the use of a cylindrical mirror, so that  they
  2813.   looked weirdly distorted on the canvas but correct in the distorted
  2814.   reflection. (This byway of art history may be a useful defense when your
  2815.   friends and family give you odd looks for staring at fractal images
  2816.   color-cycling on a CRT.)
  2817.  
  2818.   The <I>nversion option performs a related transformation on most of the
  2819.   fractal types. You define the center point and radius of a circle;
  2820.   FRACTINT maps each point inside the circle to a corresponding point
  2821.   outside, and vice-versa. This is known to mathematicians as inverting
  2822.   (or if you want to get precise, "everting") the plane, and is something
  2823.   they can contemplate without getting a headache. John Milnor, mentioned
  2824.   earlier in connection with the distance-estimator method, made his name
  2825.   in the 1950s with a method for everting a seven-dimensional sphere, so
  2826.   we have a lot of catching up to do.
  2827.  
  2828.   For example, if a point inside the circle is 1/3 of the way from the
  2829.   center to the radius, it is mapped to a point along the same radial
  2830.  
  2831.  
  2832.                                        48
  2833.  
  2834.   line, but at a distance of (3 * radius) from the origin. An outside
  2835.   point at 4 times the radius is mapped inside at 1/4 the radius.
  2836.  
  2837.   The <I> command prompts you for the radius and center coordinates of the
  2838.   inversion circle. A default choice of -1 sets the radius at 1/6 the
  2839.   smaller dimension of the image currently on the screen.  The default
  2840.   values for Xcenter and Ycenter use the coordinates currently mapped to
  2841.   the center of the screen.
  2842.  
  2843.   Try this one out with a Newton plot, so its radial "spokes" will give
  2844.   you something to hang on to. Plot a Newton-method image, then hit <I>
  2845.   and use a radius of 1, default center coordinates. The center has
  2846.   "exploded" to the periphery.
  2847.  
  2848.   Inverting through a circle not centered on the origin produces bizarre
  2849.   effects that we're not even going to try to describe. Aren't computers
  2850.   wonderful?
  2851.  
  2852.  
  2853.   DECOMPOSITION
  2854.  
  2855.   You'll remember that most fractal types are calculated by iterating a
  2856.   simple function of a complex number, producing another complex number,
  2857.   until either the number exceeds some pre-defined "bailout" value, or the
  2858.   iteration limit is reached. The pixel corresponding to the starting
  2859.   point is then colored based on the result of that calculation.
  2860.  
  2861.   The decomposition command toggles to another coloring protocol. (It's
  2862.   <Q> because the first implementation was 4-way or "quaternary," and <D>
  2863.   was already spoken for.) Here the points are colored according to which
  2864.   quadrant of the complex plane (negative real/positive imaginary,
  2865.   positive real/positive imaginary, etc.) the final value is in. If you
  2866.   use 4 as the first parameter, points ending up in each quadrant are
  2867.   given their own color; if 2 (binary decomposition), points in alternat-
  2868.   ing quadrants are given 2 alternating colors.
  2869.  
  2870.   The result is a kind of warped checkerboard coloring, even in areas that
  2871.   would ordinarily be part of a single contour. Remember, for the M-set
  2872.   all points whose final values exceed 2 (by any amount) after, say, 80
  2873.   iterations are normally the same color; under decomposition, FRACTINT
  2874.   runs [bailout-value] iterations and then colors according to where the
  2875.   actual final value falls on the complex plane.
  2876.  
  2877.   The second parameter is the bailout value. The smaller it is, the faster
  2878.   (though not much) the plot will run; the larger it is, the more accurate
  2879.   it will be. A value of about 50 is a good compromise for M/J sets.
  2880.  
  2881.   LOGARITHMIC PALETTES
  2882.  
  2883.   By default, Fractint maps iterations to colors 1-1.  If you are using a
  2884.   16-color video mode, and you are using the default maximum iteration count
  2885.   of 150, your image will run through the 16-color palette 150/16 = 9.375
  2886.   times.  If you elect to use Logarithmic palettes, however, the color
  2887.   Fractint uses for iteration N will be determined by the algorithm
  2888.   "palettenumber = maxcolors * log(N) / log(maxiter).  This results in
  2889.  
  2890.  
  2891.                                        49
  2892.  
  2893.   spectacularly different images if you are using a high iteration limit
  2894.   near the current iteration maximum of 32000 and are zooming in on an area
  2895.   near a "lakelet".
  2896.  
  2897.   When using a logarithmic palette in a 256 color mode, we suggest changing
  2898.   your colors from the usual defaults.  The last few colors in the default
  2899.   IBM VGA color map are black.  This results in points nearest the "lake"
  2900.   smearing into a single dark band, with little contrast from the blue
  2901.   (by default) lake.
  2902.  
  2903.   BIOMORPHS
  2904.  
  2905.   Related to binary decomposition are the "biomorphs" invented by Clifford
  2906.   Pickover, and discussed by A. K. Dewdney in the July 1989 "Scientific
  2907.   American", page 110. These are so-named because this coloring scheme
  2908.   makes many fractals look like one-celled animals. The idea is simple.
  2909.   The escape-time algorithm terminates an iterating formula when the size
  2910.   of the orbit value exceeds a predetermined bail-out value. Normally the
  2911.   pixel corresponding to that orbit is colored according to the iteration
  2912.   when bailout happened. To create biomorphs, this is modified so that if
  2913.   EITHER the real OR the imaginary component is LESS than the bailout,
  2914.   then the pixel is set to the "biomorph" color. The effect is a bit
  2915.   better with higher bailout values: the bailout is automatically set to
  2916.   100 when this option is in effect. You can try other values with the
  2917.   "bailout=" option.  The biomorph option is turned on via the
  2918.   "biomorph=nnn" command-line option (where "nnn" is the color to use on
  2919.   the affected pixels).  When toggling to Julia sets, the default corners
  2920.   are three times bigger than normal to allow seeing the biomorph
  2921.   appendages. Does not work with all types -in particular it fails with
  2922.   any of the mandelsine family. However, if you are stuck with monochrome
  2923.   graphics, try it - works great in two-color modes. Try it with the
  2924.   marksmandel and marksjulia types, or any of the new "biomorph" fractals.
  2925.  
  2926.  
  2927.   STARFIELDS
  2928.  
  2929.   Once you have generated your favorite fractal image, you can convert it
  2930.   into a fractal starfield with the 'a' transformation (for 'astronomy'? -
  2931.   once again, all of the good letters were gone already).  Stars are
  2932.   generated on a pixel-by-pixel basis - the odds that a particular pixel
  2933.   will coalesce into a star are based (partially) on the color index of
  2934.   that pixel.
  2935.  
  2936.   (The following was supplied by Mark Peterson, the starfield author).
  2937.  
  2938.   If the screen were entirely black and the 'Star Density per Pixel' were
  2939.   set to 30 then a starfield transformation would create an evenly
  2940.   distributed starfield with an average of one star for every 30 pixels.
  2941.  
  2942.   If you're on a 320x200 screen then you have 64000 pixels and would end
  2943.   up with about 2100 stars.  By introducing the variable of 'Clumpiness' we
  2944.   can create more stars in areas that have higher color values.  At 100%
  2945.   Clumpiness a color value of 255 will change the average of finding a star
  2946.   at that location to 50:50.  A lower clumpiness values will lower the amount
  2947.   of probability weighting.  To create a spiral galaxy draw your favorite
  2948.  
  2949.  
  2950.                                        50
  2951.  
  2952.   spiral fractal (IFS, Julia, or Mandelbrot) and perform a starfield
  2953.   transformation.  For general starfields I'd recommend transforming a
  2954.   plasma fractal.
  2955.  
  2956.   Real starfields have many more dim stars than bright ones because very
  2957.   few stars are close enough to appear bright.  To achieve this effect the
  2958.   program will create a bell curve based on the value of ratio of Dim
  2959.   stars to bright stars.  After calculating the bell curve the curve is
  2960.   folded in half and the peak used to represent the number of dim stars.
  2961.  
  2962.   Starfields can only be shown in 256 colors.  FRACTINT will automatically
  2963.   try to load ALTERN.MAP and abort if the map file cannot be found.
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.                                        51
  3010.  
  3011.   3. Command-Line Arguments, Batch Mode, and SSTOOLS.INI
  3012.  
  3013.   FRACTINT accepts command-line arguments that allow you to load it with
  3014.   your own choice of video mode, starting coordinates, and just about
  3015.   every other parameter and option. These arguments can also be included
  3016.   in a SSTOOLS.INI startup file, or in command files invoked on the
  3017.   command line using LINK-style syntax ("FRACTINT @MYFILE"). The program
  3018.   first looks along the DOS PATH for any file called SSTOOLS.INI and reads
  3019.   start-up variables from that file. Then, it looks at its own command
  3020.   line; arguments there will over-ride those from the .INI file. The
  3021.   syntax is:
  3022.  
  3023.                 FRACTINT argument argument argument...
  3024.  
  3025.   where the individual arguments are separated by one or more spaces (an
  3026.   individual argument may NOT include spaces). Either upper or lower case
  3027.   may be used, and arguments can be in any order. To make your file more
  3028.   readable, you may replace the spaces with Returns.
  3029.  
  3030.   Some terminology:
  3031.   COMMAND=nnn               enter a number in place of "nnn"
  3032.   COMMAND=[filename]        you supply filename
  3033.   COMMAND=yes|no|whatever   means choose one of "yes", "no", and "whatever"
  3034.   COMMAND=1st[/2nd[/3rd]] - the slash-separated parameters "2nd" and
  3035.                             "3rd" are optional
  3036.  
  3037.   FILENAME=[name]
  3038.   Causes FRACTINT to read the named file, which must either have been
  3039.   saved from an earlier FRACTINT session (version 7.0 or later) or be a
  3040.   generic GIF file, and use that as its starting point, bypassing the
  3041.   initial information screens. The filetype is optional and defaults to
  3042.   *.GIF. Non-FRACTINT GIF files are restored as fractal type "plasma". On
  3043.   the command line you may omit FILENAME= and just give the name; the full
  3044.   argument is required in SSTOOLS.INI and other command files.
  3045.  
  3046.   @FILENAME
  3047.   Causes FRACTINT to read "filename" for arguments. When it finishes, it
  3048.   resumes reading its own command line -- i.e., "FRACTINT MAXITER=250
  3049.   @MYFILE PASSES=1" is legal. This option is only valid on the command
  3050.   line, as FRACTINT is not clever enough to deal with multiple
  3051.   indirection.
  3052.  
  3053.   PASSES=1|2|guess|btm
  3054.   Selects single-pass, dual-pass, solid-Guessing mode, or the Boundary
  3055.   Tracing algorithm.  Again, the first two take the same total time to
  3056.   finish the display, while solid-guessing is faster at the risk of errors
  3057.   for a few pixels.  Boundary tracing is sometimes faster, sometimes
  3058.   slower, and doesn't work for some fractal types at all (like the Newton
  3059.   fractals).
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.                                        52
  3069.  
  3070.   INSIDE=nnn|bof60|bof61|attractor
  3071.   Set the color of the interior: for example, "inside=0" makes the M-set a
  3072.   stylish basic black. A setting of -1 makes inside=maxiter. Two more options
  3073.   reveal hidden structure inside the lake.  These are inside=bof61, and
  3074.   inside=bof62, named after the figures on pages 61 and 62 of "Beauty of
  3075.   Fractals". See Appendix for a brilliant explanation of what these do!
  3076.  
  3077.   FINATTRACT=no|yes
  3078.   Another option to show coloring inside some Julia "lakes" to show escape
  3079.   time to finite attractors. Works with lambda, magnet types, and possibly
  3080.   others.  See appendix for more information.
  3081.  
  3082.   OUTSIDE=nnn
  3083.   Set the color of the exterior: for example, "OUTSIDE=1" makes all points
  3084.   not INSIDE the fractal set to color 1 (blue). Note that defining an
  3085.   OUTSIDE color forces any image to be a two-color one: either a point is
  3086.   INSIDE the set, or it's OUTSIDE it.
  3087.  
  3088.   MAXITER=nnn
  3089.   Reset the iteration maximum (the number of iterations at which the
  3090.   program gives up and says 'OK, this point seems to be part of the set in
  3091.   question and should be colored [insidecolor]') from the default 150.
  3092.   Values range from 10 to 32000 (super-high iteration limits like 30000
  3093.   are useful when using logarithmic palettes).
  3094.  
  3095.   BAILOUT=nnn
  3096.   Over-rides the default bailout criterion for escape-time fractals. Can
  3097.   also be set from the parameters screen after selecting a type.
  3098.  
  3099.   ITERINCR=nnn
  3100.   Set the iteration increment (the change in maxiter when you hit the '<'
  3101.   or '>' keys). Default is 50.
  3102.  
  3103.   VIDEO=xxx
  3104.   Set the initial video mode (and bypass the informational screens). Handy
  3105.   for batch runs. (Example: VIDEO=F4 for IBM 16-color VGA.)
  3106.  
  3107.   (You can obtain the current VIDEO= values from the "Video Modes" help
  3108.   screens inside Fractint.  We don't duplicate them here only because they
  3109.   change so darned often!)
  3110.  
  3111.   ASKVIDEO=yes|no
  3112.   If "no," this eliminates the prompt asking you if a file to be restored
  3113.   is OK for your current video hardware.
  3114.  
  3115.   WARNING: every version of FRACTINT so far has had a bigger, better, but
  3116.   shuffled-around video table. Since calling for a mode your hardware
  3117.   doesn't support can leave your system in limbo, be careful about leaving
  3118.   these arguments in a command file to be used with future versions of
  3119.   FRACTINT, particularly for the super-VGA modes.
  3120.  
  3121.   SAVENAME=[name]
  3122.   Set the filename to use when you <S>ave a screen. The default filename
  3123.   is FRACT001. The .GIF extension is optional (Example: SAVENAME=myfile)
  3124.  
  3125.  
  3126.  
  3127.                                        53
  3128.  
  3129.   WARN=yes|no
  3130.   Sets the savename warning flag (default is 'no'). If 'yes', saved files
  3131.   will NOT over-write existing files from previous sessions; instead the
  3132.   automatic incrementing of FRACTnnn.GIF will continue.
  3133.  
  3134.   SAVETIME=nnn
  3135.   Tells Fractint to automatically do a save every nnn minutes while a
  3136.   calculation is in progress.  This is mainly useful with long batches;
  3137.   see "Batch Mode" notes for more information.
  3138.  
  3139.   TYPE=[name]
  3140.   Selects the type of fractal image to display. The default is type
  3141.   "mandel," the M-set.
  3142.  
  3143.   PARAMS=n/n/n/n...
  3144.   Set optional (required, for some fractal types) values used in plotting.
  3145.   These numbers typically represent the real and imaginary portions of
  3146.   some startup value, and are described in detail as needed in Sec. 2.
  3147.   (Example: FRACTINT TYPE=julia PARAMS=-0.48/0.626 would wait at the
  3148.   opening screen for you to select a video mode, but then proceed straight
  3149.   to the Julia set for the stated x (real) and y (imaginary) coordinates.)
  3150.  
  3151.   CORNERS=xmin/xmax/ymin/ymax[/x3rd/y3rd]
  3152.   Example: corners=-0.739/-0.736/0.288/0.291
  3153.   Begin with these coordinates as the range of x and y coordinates, rather
  3154.   than the default values of (for type=mandel) -2.0/2.0/-1.5/1.5. When you
  3155.   specify four values (the usual case), this defines a rectangle: x-
  3156.   coordinates are mapped to the screen, left to right, from xmin to xmax,
  3157.   y-coordinates are mapped to the screen, bottom to top, from ymin to
  3158.   ymax. Six parameters can be used to describe any rotated or stretched
  3159.   parallelogram:  (xmin,ymax) are the coordinates used for the top-left
  3160.   corner of the screen, (xmax,ymin) for the bottom-right corner, and
  3161.   (x3rd,y3rd) for the bottom-left.
  3162.  
  3163.   CENTER-MAG=[Xctr/Yctr/Mag]
  3164.   This is an alternative way to enter corners as a center point and a
  3165.   magnification that is popular with some fractal programs and
  3166.   publications. Entering just "CENTER-MAG=" tells FRACTINT whether to use
  3167.   this form rather than corners when creating a batch file with the <B>
  3168.   command. The <TAB> status display now shows the "corners" in both forms.
  3169.   Note that an aspect ratio of 1.3333 is assumed; if you have altered the
  3170.   zoom box proportions or rotated the zoom box, this form can no longer be
  3171.   used.
  3172.  
  3173.   POTENTIAL=maxcolor[/slope[/modulus[/potfile]]]
  3174.   Establishes the "continuous potential" coloring mode for all fractal
  3175.   types except plasma clouds, IFS and IFS3D. The four arguments define the
  3176.   maximum color value, the slope of the potential curve, the modulus
  3177.   "bailout" value, and the savefile name. Example: "POTENTIAL=
  3178.   240/2000/40/potfile". The Mandelbrot and Julia types ignore the modulus
  3179.   bailout value and use their own hardwired value of 4.0 instead; see Sec.
  3180.   4 on the continuous-potential algorithm for details.
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.                                        54
  3187.  
  3188.   RSEED=nnnn
  3189.   The initial random-number "seed" for plasma clouds is taken from your
  3190.   PC's internal clock-timer. This argument forces a value (which you can
  3191.   see in the <Tab> display), and allows you to reproduce plasma clouds. A
  3192.   detailed discussion of why a TRULY random number may be impossible to
  3193.   define, let alone generate, will have to wait for "FRACTINT: The 3-MB
  3194.   Doc File."
  3195.  
  3196.   DECOMP=2|4|8|16|32|64|128|256
  3197.   Invokes the corresponding decomposition coloring scheme.
  3198.  
  3199.   DISTEST=nnn
  3200.   Nonzero values enable the distance estimator method. Any nonzero value
  3201.   has the same effect in monochrome modes. Higher values result in more
  3202.   and narrower color bands in color modes; 1000 is a good value to try.
  3203.  
  3204.   LOGMAP=yes|old
  3205.   Normally escape-time iterations are mapped one-to-one to palette colors,
  3206.   which causes areas with a high iteration count to lose detail. Turning
  3207.   this option on causes colors to be mapped to the logarithm of the
  3208.   iteration, revealing structure in the "gravel".  This command has been
  3209.   updated with an improved algorithm as of version 14.  To use the old
  3210.   method, enter "logmap=old".
  3211.  
  3212.   IFS=[filename]
  3213.   Use the IFS coded values in [filename] to generate Barnsley IFS
  3214.   fractal images. The default extension is .IFS. See Sec. 2 for details.
  3215.  
  3216.   IFS3D=[filename]
  3217.   Use the IFS coded values in [filename] to generate Barnsley IFS3D
  3218.   fractals.
  3219.  
  3220.   3D=Yes
  3221.   Resets all 3d parameters to default values, as described in Sec. 2.
  3222.   If FILENAME= is given, forces the restore to be performed in 3D mode.
  3223.   Very handy when used with the 'batch=yes' option for batch-mode 3D
  3224.   images. If 3D=Yes follows the setting of any 3d parameters on the
  3225.   command line or in a command file, they will be reset to default
  3226.   values. (Note: the form "3D/=parm/parm/parm ..." for entering 3D
  3227.   parameters still works but will not be supported in the future. Use
  3228.   the variables below. Position-sensitive parameters are nasty and evil,
  3229.   especially when there are dozens of them!)
  3230.  
  3231.   The options below replace selected 3D defaults:
  3232.   SPHERE=yes                 Turns on spherical projection mode
  3233.   LONGITUDE=nn/nn            Longitude minimum and maximum
  3234.   LATITUDE=nn/nn             Latitude minimum and maximum
  3235.   RADIUS=nn                  Radius scale factor
  3236.   ROTATION=nn[/nn[/nn]]      Rotation about x,y, and z axes
  3237.   SCALEZYZ=nn/nn/nn          X,y,and z scale factors
  3238.   ROUGHNESS=nn               Same as z scale factor
  3239.   WATERLINE=nn               Colors nn and below will be "inside" color
  3240.   FILLTYPE=nn                3D filltype
  3241.   PERSPECTIVE=nn             Perspective distance
  3242.  
  3243.  
  3244.  
  3245.                                        55
  3246.  
  3247.   XYSHIFT=nn/nn              Shift image in x and y directions with
  3248.                               perspective
  3249.   LIGHTSOURCE=nn/nn/nn       Coordinates for light-source vector
  3250.   SMOOTHING=nn               Smooths images in light-source fill modes
  3251.   TRANSPARENT=min/max        Defines a range of colors to be treated as
  3252.                               "transparent" when <O>verlaying 3D images.
  3253.   XYADJUST=nn/nn             This shifts the image in the x/y dir without
  3254.                               perspective
  3255.   STEREO=n                   Selects the type of stereo image creation
  3256.   INTEROCULAR=nn             Sets the interocular distance for stereo
  3257.   CONVERGE=nn                Determines the overall image separation
  3258.   CROP=nn/nn/nn/nn           Trims the edges off stereo pairs
  3259.   BRIGHT=nn/nn               Compensates for funny glasses filter parameters
  3260.  
  3261.   Below are new commands as of version 14 that support Marc Reinig's
  3262.   terrain features.
  3263.  
  3264.   RANDOMIZE=nnn  (0 - 100)
  3265.   This feature randomly varies the color of a pixel to near by colors. Useful
  3266.   to minimize map banding in 3d transformations. Usable with all FILLTYPES. 0
  3267.   disables, max values is 7. Try 3 - 5.
  3268.  
  3269.   AMBIENT=nnn (0 - 100)
  3270.   Set the depth of the shadows when using full color and light source
  3271.   filltypes. "0" disables the function, higher values lower the contrast.
  3272.  
  3273.   FULLCOLOR=yes
  3274.   Valid with any light source FILLTYPE. Allows you to create a Targa-24 file
  3275.   which uses the color of the image being transformed or the map you select
  3276.   and shades it as you would see it in real life. Well, its better than BW. A
  3277.   good map file to use is topo
  3278.  
  3279.  
  3280.   HAZE=nnn (0 - 100)
  3281.   Gives more realistic terrains by setting the amount of haze for distant
  3282.   objects when using full color in light source FILLTYPES. Works only in the
  3283.   "y" direction currently, so don't use it with much y rotation. Try
  3284.   "rotation=85/0/0". 0 disables.
  3285.  
  3286.  
  3287.   LIGHTNAME=<filename>
  3288.   The name of the Targa-24 file to be created when using full color with
  3289.   light source. Default is light001.tga. If warn=yes the file name will be
  3290.   incremented. Background in this file will be sky blue.
  3291.  
  3292.   To stay out of trouble, use the complete list, even if you want to use
  3293.   what you think are the default values. It takes a little practice to
  3294.   learn what the default values really are. The best way to create a
  3295.   command file is to use the Batch command <B> on an image you like and
  3296.   then modify the resulting parameters.
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.                                        56
  3305.  
  3306.   INVERT=nn/nn/nn
  3307.   Turns on inversion. The parameters are radius of inversion, x-coordi-
  3308.   nate of center, and y-coordinate of center. -1 as the first parameter
  3309.   sets the radius to 1/6 the smaller screen dimension; no x/y parameters
  3310.   defaults to center of screen. The values are displayed with the <Tab>
  3311.   command.
  3312.  
  3313.   FLOAT=yes
  3314.   Most fractal types have both a fast integer math and a floating point
  3315.   version. The faster, but possibly less accurate, integer version is the
  3316.   default. If you have a new 80486 or other fast machine with a math
  3317.   coprocessor, or if you are using the continuous potential option (which
  3318.   looks best with high bailout values not possible with our integer math
  3319.   implementation), you may prefer to use floating point. Just add "float=yes"
  3320.   to the command line to do so.
  3321.  
  3322.   PRINTER=type[/resolution[/port#]]
  3323.   Defines your printer setup. Currently legal printer types (only the
  3324.   first two characters are needed): [HP] LaserJet, [EP]son-compatible,
  3325.   [IB]M-compatible (which is identical to the Epson driver at the
  3326.   moment), [CO]lor (equivalent to the Star Micronics printer, which
  3327.   is supposedly epson-color-compatible), and [PA]intjet.
  3328.   The default printer type is the Epson/IBM. Resolution is in
  3329.   DPI, and currently available values are 60, 120, and 240 for the
  3330.   Epson/IBM and 75, 150, and 300 for the LaserJet (the default value is
  3331.   the lowest resolution). Legal printer port values are 1, 2, and 3 (for
  3332.   LPT 1-3) and 11, 12, 13, and 14 (for COM1-4). The SSTOOLS.INI file is a
  3333.   REAL handy place to put this option, so that it's available whenever
  3334.   you have that sudden, irresistible urge for hard copy.
  3335.  
  3336.   CYCLELIMIT=nnn
  3337.   Sets the speed of color cycling. Technically, the number of DAC regis-
  3338.   ters updated during a single vertical refresh cycle. Legal values are 1
  3339.   - 256, default is 55.
  3340.  
  3341.   MAP=[filename]
  3342.   Reads in a replacement color map from [filename]. This map replaces the
  3343.   default video color map of your VGA or TARGA card. The file must be in
  3344.   the format described in Sec. 4. The difference between this argument
  3345.   and an alternate map read in via <M> in color-command mode is that this
  3346.   one is permanent. WARNING: If colors 0 and 1 decode to the same color,
  3347.   your help screens will use the same color for both text and back-
  3348.   ground, which makes them kind of difficult to read.
  3349.  
  3350.   FORMULAFILE=[formulafilename]
  3351.   Lets you specify the default formula file for type=formula fractals
  3352.   (the default is FRACTINT.FRM).  Handy if you want to generate one
  3353.   of these fractal types in batch mode.
  3354.  
  3355.   FORMULANAME=[formulaname]
  3356.   Lets you specify the default formula name for type=formula fractals
  3357.   (the default is no formula at all).  Required if you want to generate
  3358.   one of these fractal types in batch mode, as this is the only way to
  3359.   specify a formula name in that case.
  3360.  
  3361.  
  3362.  
  3363.                                        57
  3364.  
  3365.   ;
  3366.   As usual, indicates the rest of the command line (or the rest of the
  3367.   individual line inside command files) is a comment.
  3368.  
  3369.   SOUND=off|x|y|z
  3370.   We're all MUCH too busy to waste time with FRACTINT at work, and no doubt
  3371.   you are too, so "sound=off" included only for use at home, to avoid waking
  3372.   the kids or your Significant Other, late at night. (By the way, didn't you
  3373.   tell yourself "just one more zoom on LambdaSine" an hour ago?) Suggestions
  3374.   for a "boss" hot-key will be cheerfully ignored, as this sucker is getting
  3375.   big enough without including a spreadsheet screen too. The "sound=x/y/x"
  3376.   options are for the "attractor" fractals, like the Lorenz fractals - they
  3377.   play with the sound on your PC speaker as they are generating an image,
  3378.   based on the X or Y or Z co-ordinate they are displaying at the moment.  At
  3379.   the moment, "sound=x" (or y or z) really doesn't work very well when using
  3380.   an integer algorithm - try it with the floating-point toggle set, instead.
  3381.  
  3382.   HERTZ=nnn
  3383.   Adjusts the sound produced by the "sound=x/y/z" option.  Legal values
  3384.   are 200 through 10000.
  3385.  
  3386.   BATCH=config
  3387.   Starts a quick batch-mode run that creates a default FRACTINT.CFG file
  3388.   from the full internal video table (FRACTINT.CFG is described in Sec. 5).
  3389.  
  3390.   FUNCTION=[fn1[/fn2[/fn3[/fn4]]]]
  3391.   Allows setting variable functions found in some fractal type formulae.
  3392.   Possible values are sin, cos, sinh, cosh, exp, log, and sqr.
  3393.  
  3394.   PERIODICITY=no|show|nnn
  3395.   Allows control of periodicity checking.  "no" turns it off, "show" lets
  3396.   you see which pixels were painted the "inside" color due to being caught
  3397.   by periodicity.  Specifying a number causes a more conservative
  3398.   periodicity test (each increase of 1 divides the test tolerance by 2).
  3399.   Entering a negative number lets you turn on "show" with that number.
  3400.   Type lambdafn function=exp needs periodicity turned off to be
  3401.   accurate -- there may be other cases.
  3402.  
  3403.   INITORBIT=pixel
  3404.   INITORBIT=nnn/nnn
  3405.   Allows control over the value used to begin each Mandelbrot-type orbit.
  3406.   "initorbit=pixel" is the default for most types; this command initializes
  3407.   the orbit to the complex number corresponding to the screen pixel. The
  3408.   command "initorbit=nnn/nnn" uses the entered value as the initializer. See
  3409.   the discussion of the MANDELLAMBDA type for more on this topic.
  3410.   allows changing the initialization of types that do not use lo
  3411.  
  3412.   GIF87a=YES
  3413.   Backward-compatibility switch to force creation of GIF files in the GIF87a
  3414.   format.  As of version 14, FRACTINT now defaults to the new GIF89a format
  3415.   which permits storage of fractal information within the format. This switch
  3416.   is only needed if you wish to view FRACTINT images with a GIF decoder that
  3417.   cannot accept the newer format.
  3418.  
  3419.  
  3420.  
  3421.  
  3422.                                        58
  3423.  
  3424.      BATCH MODE
  3425.  
  3426.   It IS possible, believe it or not, to become so jaded with the screen
  3427.   drawing process, so familiar with the types and options, that you just
  3428.   want to hit a key and do something else until the final images are safe
  3429.   on disk.  To do this, start Fractint with the BATCH=yes parameter added
  3430.   to the command line.  To create a batch file with the parameters
  3431.   required for a particular image you might:
  3432.     o Find an interesting area.  Note the parameters from the <Tab>
  3433.       display.  Then use an editor to write a batch file.
  3434.     o Find an interesting area.  Set all the parameters you'll want
  3435.       in the batch run.  Use the <B> command to store the parameters
  3436.       in FRABATCH.BAT.  Then use an editor to add the required batch
  3437.       mode parameters to the generated FRABATCH.BAT line.
  3438.   A different approach to batch mode calculations, using "FILENAME="
  3439.   and resume, is described below.
  3440.  
  3441.   When modifying a command line generated by the <B> command, the
  3442.   only parameters you must add for a batch mode run are "BATCH=yes",
  3443.   and "VIDEO=xxx" to select a video mode.  You might want to also add
  3444.   "SAVENAME=[name]" to name the result as something other than the
  3445.   default FRACT001.GIF.  Watch out for the line exceeding the DOS
  3446.   limit of 120 characters - if it does, use "fractint @filename" in
  3447.   your batch and put the parameters in another file "filename".
  3448.  
  3449.   "BATCH=yes" tells Fractint to run in batch mode -- that is, Fractint
  3450.   draws the image using whatever other parameters you specified, then
  3451.   acts as if you had hit <S> to save the image, then exits to DOS.
  3452.  
  3453.   "FILENAME=" can be used with "BATCH=yes" to resume calculation of an
  3454.   incomplete image.  For instance, you might interactively find an image
  3455.   you like; then select some slow options (a high resolution disk video
  3456.   mode, distance estimator method, high maxiter, or whatever);  start
  3457.   the calculation;  then interrupt immediately with a <S>ave.  Rename
  3458.   the save file (fract001.gif if it is the first in the session and
  3459.   you didn't name it with the <X> options or "savename=") to xxx.gif.
  3460.   Later you can run a batch file to finish the job:
  3461.       fractint batch=yes filename=xxx savename=xxx
  3462.  
  3463.   "SAVETIME=nnn" is useful with long batch calculations, to store a
  3464.   checkpoint every nnn minutes.  If you start a many hour calculation
  3465.   with say "savetime=60", and a power failure occurs during the
  3466.   calculation, you'll have lost at most an hour of work on the image.
  3467.   You can resume calculation from the save file as above.  Automatic
  3468.   saves triggered by SAVETIME do not increment the save file name. The
  3469.   same file is overwritten by each auto save until the image completes.
  3470.   But note that Fractint does not directly over-write save files.
  3471.   Instead, each save operation writes a temporary file FRACTINT.TMP,
  3472.   then deletes the prior save file, then renames FRACTINT.TMP to be
  3473.   the new save file.  This protects against power failures which occur
  3474.   during a save operation - if such a power failure occurs, the prior
  3475.   save file is intact and there's a harmless incomplete FRACTINT.TMP
  3476.   on your disk.
  3477.  
  3478.  
  3479.  
  3480.  
  3481.                                        59
  3482.  
  3483.   If you want to spread a many-hour image over multiple bits of free
  3484.   machine time you could use a batch like:
  3485.       fractint batch=yes filename=xxx savename=xxx savetime=60
  3486.   While this batch is running, hit <S> (almost any key actually) to tell
  3487.   fractint to save what it has done so far and give your machine back.
  3488.   Kick off the batch again when you have another time slice for it.
  3489.  
  3490.   The SAVETIME= parameter, and batch resumes of partial calculations,
  3491.   only work with fractal types which can be resumed.  See "Interrupting
  3492.   and Resuming" for information about non-resumable types.
  3493.  
  3494.  
  3495.   SSTOOLS.INI
  3496.  
  3497.   If you are familiar with Microsoft's TOOLS.INI or WINDOWS.INI configu-
  3498.   ration files, the SSTOOLS.INI command file is used in the same way. In
  3499.   particular, you designate a section of SSTOOLS.INI as belonging to a
  3500.   particular program by beginning the section with a label in brackets.
  3501.   FRACTINT looks for the label [fractint], and ignores any lines it finds
  3502.   in the file belonging to any other label. If an SSTOOLS.INI file looks
  3503.   like this:
  3504.  
  3505.   [fractint]
  3506.   sound=off                    ; (for home use only)
  3507.   printer=hp                   ; my printer is a LaserJet
  3508.   [startrek]
  3509.   Aye, captain, but I dinna think the engines can take it!
  3510.   [fractint]
  3511.   inside=0                     ; using "traditional" black
  3512.  
  3513.   FRACTINT will use only the second, third, and last lines.
  3514.  
  3515.   (Why use a convention like that when FRACTINT is the only program
  3516.   you know of that uses an SSTOOLS.INI file?  Because there are other
  3517.   programs (such as Lee Crocker's PICLAB) that now use the same file, and
  3518.   people working on other, sister programs to FRACTINT are going to read
  3519.   that file. And just when you thought it was safe to download again..!)
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.                                        60
  3541.  
  3542.   4. File Formats, Color Maps and All That
  3543.  
  3544.   FRACTINT AND .GIF FILES
  3545.  
  3546.   Since version 5.0, FRACTINT has had the <S>ave-to-disk command, which
  3547.   stores screen images in the extremely compact, flexible .GIF (Graphics
  3548.   Interchange Format) widely supported on Compuserve. Version 7.0 added
  3549.   the <R>estore-from-disk capability. Unfortunately, this created a
  3550.   problem. The then-current GIF87a specification did not offer a place
  3551.   to store the small amount of extra information that FRACTINT needs in
  3552.   order to implement the <R> feature -- i.e., the parameters that let you
  3553.   keep zooming, etc. so on as if the restored file had just been created
  3554.   in this session.
  3555.  
  3556.   FRACTINT got around this restriction in a non-standard manner, saving
  3557.   its application-specific information AFTER the official GIF terminator
  3558.   character. This trick worked with all of the popular GIF decoders that
  3559.   we had tested (although some of them required renaming the file to
  3560.   xxxx.GIF first).
  3561.  
  3562.   We did not claim that these files are true GIF files. For one thing,
  3563.   information after the GIF terminator has the potential to confuse the
  3564.   on-line GIF viewers used on Compuserve. For another, it is the opinion
  3565.   of some GIF developers that the addition of this extra information violates
  3566.   the GIF87a spec. That's why we used the default filetype .FRA instead.
  3567.  
  3568.   On August 1, 1990, Compuserve released an official upwardly-compatible
  3569.   extension of the GIF87a spec, called GIF89a.  This new spec allows the
  3570.   placement of application data within "extension blocks". FRACTINT version
  3571.   14 supports the new spec. We have changed default savename extension from
  3572.   *.FRA to *.GIF.  Version 14 can still read *.FRA files generated by earlier
  3573.   versions.  If for some reason you wish to save files in the older GIF87a
  3574.   format, because, for example, your favorite GIF decoder has not yet been
  3575.   upgraded to GIF89a, just add the command-line parameter "GIF87a=yes".  Then
  3576.   any saved files will use the original GIF87a format without any
  3577.   application-specific information.
  3578.  
  3579.   An easy way to convert an older .FRA file into true .GIF format suitable
  3580.   for uploading is something like this at the DOS prompt:
  3581.  
  3582.   FRACTINT MYFILE.FRA SAVENAME=MYFILE.GIF BATCH=YES
  3583.  
  3584.   FRACTINT will load MYFILE.FRA, save it in true .GIF format as MYFILE.GIF,
  3585.   and return to DOS.
  3586.  
  3587.   There is one significant advantage to the new GIF89a format compared to the
  3588.   old GIF87a-based .FRA format for FRACTINT purposes:  the new .GIF files may
  3589.   be uploaded to the Compuserve graphics forums (such as FRACTINT's home
  3590.   forum, COMART) with fractal information intact.  Therefore anyone
  3591.   downloading a FRACTINT image from Compuserve will also be downloading all
  3592.   the information needed to re-generate the image.
  3593.  
  3594.   GIF and "Graphics Interchange Format" are trademarks of Compuserve
  3595.   Incorporated, an H&R Block Company.
  3596.  
  3597.  
  3598.  
  3599.                                        61
  3600.  
  3601.   CONTINUOUS POTENTIAL
  3602.  
  3603.   FRACTINT's images are usually calculated by the "level set" method,
  3604.   producing bands of color corresponding to regions where the calculation
  3605.   gives the same value. When viewed in 3D, most images other than plasma
  3606.   clouds are like terraced landscapes: most of the surface is either
  3607.   horizontal or vertical.
  3608.  
  3609.   To get the best results with the "illuminated" 3D fill options 5 and 6,
  3610.   there is an alternative approach that yields continuous changes in
  3611.   colors. A 256-color MCGA/VGA video mode is mandatory to appreciate this
  3612.   effect (it's hard to show continuous variation with only 4 or 16
  3613.   colors!)
  3614.  
  3615.   Continuous potential is approximated by calculating
  3616.  
  3617.            potential =  log(modulus)/2^iterations
  3618.  
  3619.   where "modulus" is the orbit value (magnitude of the complex number)
  3620.   when the modulus bailout was exceeded, at the "iterations" iteration.
  3621.   Clear as mud, right?
  3622.  
  3623.   Fortunately, you don't have to understand all the details. However,
  3624.   there ARE a few points to understand. First, FRACTINT's criterion for
  3625.   halting a fractal calculation, the "modulus bailout value", is general-
  3626.   ly set to 4. Continuous potential is inaccurate at such a low value.
  3627.  
  3628.   The bad news is that the integer math which makes the "mandel" and
  3629.   "julia" types so fast imposes a hard-wired maximum value of 127. You
  3630.   can still make interesting images from those types, though, so don't
  3631.   avoid them. You will see "ridges" in the "hillsides." Some folks like
  3632.   the effect.
  3633.  
  3634.   The good news is that the other fractal types, particularly the
  3635.   (generally slower) floating point algorithms, have no such limitation.
  3636.   The even better news is that there is a floating-point algorithm for
  3637.   the "mandel" and "julia" types.  To force the use of a floating-point
  3638.   algorithm, use Fractint with the "FLOAT=YES" command-line toggle.  Only
  3639.   a few fractal types like plasma clouds, the Barnsley IFS/IFS3d types,
  3640.   and "test" are unaffected by this toggle.
  3641.  
  3642.   The parameters for continuous potential are:
  3643.       potential=maxcolor[/slope[/modulus[/potfile]]]
  3644.  
  3645.   "Maxcolor" is the color corresponding to zero potential, which plots as
  3646.   the TOP of the mountain. Generally this should be set to one less than
  3647.   the number of colors, e.g. 255 for VGA. Remember that the last few
  3648.   colors of the default IBM VGA palette are BLACK, so you won't see what
  3649.   you are really getting unless you change to a different palette.
  3650.  
  3651.   "Slope" affects how rapidly the colors change -- the slope of the
  3652.   "mountains" created in 3D. If this is too low, the palette will not cover
  3653.   all the potential values and large areas will be black. If it is too high,
  3654.   the range of colors in the picture will be much less than those available.
  3655.   There is no easy way to predict in advance what these values should be.
  3656.  
  3657.  
  3658.                                        62
  3659.  
  3660.  
  3661.   "Modulus" is the bailout value used to determine when an orbit has
  3662.   "escaped". Larger values give more accurate and smoother potential. A
  3663.   value of 500 gives excellent results. As noted, this value must be
  3664.   <128 for the integer fractal types (if you select a higher number, they
  3665.   will use 127).
  3666.  
  3667.   "Potfile" is a filename to store the potential image in compressed
  3668.   TARGA format, with 16 bits per pixel. If you save the image in the
  3669.   normal way and then view it in 3D, the illumination modes 5 and 6 will
  3670.   work fine, but the colors will look a bit granular. This is because
  3671.   even with 256 colors, the continuous potential is being truncated to
  3672.   integers. If the "potfile" parameter is given, much smoother pictures
  3673.   can be obtained. But beware: even these compressed files still use up
  3674.   to 2 bytes per pixel, so they can get quite large.
  3675.  
  3676.   The following commands can be used to recreate the image that Mark
  3677.   Peterson first prototyped for us, and named "MtMand":
  3678.  
  3679.                   TYPE=mandel
  3680.                   CORNERS=-0.19920/-0.11/1.0/1.06707
  3681.                   INSIDE=255
  3682.                   MAXITER=255
  3683.                   POTENTIAL=255/2000/1000/potfile.tga
  3684.                   PASSES=1
  3685.                   FLOAT=yes
  3686.  
  3687.   This assumes a 256-color video mode.
  3688.  
  3689.  
  3690.   PALETTE MAPS
  3691.  
  3692.   If you have a VGA, Super-VGA, 8514/A, or TARGA video adapter, you can
  3693.   save and restore your color palette using special color-map files
  3694.   and either the command-line "map=" option, or the "D", "A", "S",
  3695.   and "M" color-cycling mode commands.  These color-maps are ASCII files
  3696.   set up as a series of RGB triplet values (one triplet per line,
  3697.   encoded as the red, green, and blue [RGB] components of the color).
  3698.   Note that the color values are in TARGA/GIF format - values go from
  3699.   0 (low) to 255 (high), so for a VGA adapter they get divided by 4
  3700.   before being stuffed into the VGA's Video-DAC registers (so '6'
  3701.   and '7' end up referring to the same color value).  The default
  3702.   filetype for color-map files is ".MAP".
  3703.  
  3704.   The distribution file contains sample .MAP files for you to examine
  3705.   and modify - DEFAULT.MAP (the VGA start-up values), ALTERN.MAP
  3706.   (the famous "Peterson-Vigneau Pseudo-Grey Scale"), GAMMA1.MAP and
  3707.   GAMMA2.MAP (Lee Crocker's response to ALTERN.MAP), LANDSCAP.MAP
  3708.   (Guruka Singh Khalsa's favorite color-map for plasma "landscapes"),
  3709.   TOPO.MAP (Monte Davis's contribution to full color terrain), and
  3710.   GRID.MAP (great for stereo surface grid images).
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.                                        63
  3718.  
  3719.   5. Hardware Support
  3720.  
  3721.   True to the spirit of public-domain programming, FRACTINT makes only a
  3722.   limited attempt to verify that your video adapter can run in the mode you
  3723.   specify, or even that an adapter is present, before writing to it.
  3724.   Hence the warning to check your "VIDEO=" argument before using a new
  3725.   version, in which the old key combo may now call an ultraviolet
  3726.   holographic mode.
  3727.  
  3728.   FRACTINT also assumes that every EGA adapter has a full 256K of memory
  3729.   (and can therefore display 640 x 350 x 16 colors), but does nothing to
  3730.   verify that fact before slinging pixels.
  3731.  
  3732.  
  3733.   NOTES ON MODES, "STANDARD" AND OTHERWISE
  3734.  
  3735.   FRACTINT uses a video adapter table in the "C" program for everything
  3736.   it needs to know about any particular adapter/mode combination. This
  3737.   table can contain information for up to 98 adapter/mode combinations,
  3738.   and is automatically tied to 84 keys (F2-F10, their Control/ Shift/Alt
  3739.   variants, and many Alt-x keypad combos) when the program is running.
  3740.   The table entries, and the function keys they are tied to, are displayed
  3741.   as part of the help screens.
  3742.  
  3743.   This table makes adding support for various third-party video cards and
  3744.   their modes much easier, at least for the ones that pretend to be a
  3745.   standard adapter with more dots and/or colors. There is even a special
  3746.   "roll-your-own" video mode (mode 19) enabling those of you with "C"
  3747.   compilers and a copy of the FRACTINT source to generate video modes
  3748.   supporting whatever adapter you may have. You can customize the table
  3749.   using the external configuration file FRACTINT.CFG, described below.
  3750.  
  3751.   The table as currently distributed begins with nine standard and
  3752.   several non-standard IBM video modes that have been exercised success-
  3753.   fully with a PS/2 model 80. These entries, coupled with the descriptive
  3754.   comments in the table definition and the information supplied (or that
  3755.   should have been supplied!) with your video adapter, should be all you
  3756.   need to add your own entries.
  3757.  
  3758.  
  3759.   320 x 400 x 256 and 360 x 480 x 256 VGA MODES
  3760.   The IBM VGA adapter is a highly programmable device, and can be set up
  3761.   to display many video-mode combinations beyond those "officially"
  3762.   supported by the IBM BIOS. These video modes are perfectly legal, but
  3763.   temporarily reprogram the adapter (IBM or fully register-compatible) in
  3764.   a non-standard manner that the BIOS does not recognize. Because of
  3765.   this, the program cannot send any text to the screen while it is in one
  3766.   of these modes (the BIOS would garbage it). An internal flag inhibits
  3767.   all text output while the screen is in one of these video modes.
  3768.   FRACTINT's <F1> (help) and <Tab> commands still work, because they
  3769.   temporarily switch the screen to an alternate video mode.
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.                                        64
  3777.  
  3778.   8514/A MODES
  3779.  
  3780.   The IBM 8514/A modes use IBM's software interface, and require the pre-
  3781.   loading of IBM's HDIDLOAD TSR utility. There are two sets of 8514/A
  3782.   modes: full sets (640x480, 1024x768) which cover the entire screen and
  3783.   do NOT have a border color (so that you cannot tell when you are
  3784.   "paused" in a color-cycling mode), and partial sets (632x474, 1016x762)
  3785.   with small border areas which do turn white when you are paused in
  3786.   color-cycling mode. Also, while these modes are declared to be 256-
  3787.   color, if you do not have your 8514/A adapter loaded with its full
  3788.   complement of memory you will actually be in 16-color mode. Finally,
  3789.   because IBM's interface does not handle drawing single pixels very well
  3790.   (we have to draw a 1x1 pixel "box"), generating the zoom box is
  3791.   excruciatingly slow. Still, it works!
  3792.  
  3793.  
  3794.   SUPER-EGA AND SUPER-VGA MODES
  3795.   After the IBM and quasi-pseudo-demi-IBM modes, the table contains an
  3796.   ever-increasing number of entries for other adapters. Almost all of
  3797.   these entries have been added because someone like you sent us spec
  3798.   sheets, or modified FRACTINT to support them and then informed us about
  3799.   it.  With version 12.0, we've added both John Bridges' SuperVGA
  3800.   Autodetecting logic *and* VESA adapter detection, so that many of the
  3801.   brand-specific SuperVGA modes have been collapsed into a single function
  3802.   key.  There is now exactly one function key for SuperVGA 640x480x256
  3803.   mode, for instance.
  3804.  
  3805.   TARGA MODES
  3806.   TARGA support for FRACTINT is provided courtesy of Joe McLain. Be aware
  3807.   that there are a LOT of possible TARGA configurations, and a LOT of
  3808.   opportunities for a TARGA board and a VGA or EGA board to interfere
  3809.   with each other, and we may not have all of them smoothed away yet.
  3810.   Also, the TARGA boards have an entirely different color-map scheme than
  3811.   the VGA cards, and at the moment they cannot be run through the color-
  3812.   cycling menu. The "MAP=" argument (Sec. 3), however, works with both
  3813.   TARGA and VGA boards and enables you to redefine the default color maps
  3814.   with either board.
  3815.  
  3816.   "DISK-VIDEO" MODES
  3817.   These "video modes" do not involve a video adapter at all. They use (in
  3818.   order or preference) your expanded memory, your extended memory, or your
  3819.   disk drive (as file FRACTINT.DSK) to store the fractal image. These
  3820.   modes are useful for creating images beyond the capacity of your video
  3821.   adapter, right up to the current internal limit of 2048 x 2048 x 256,
  3822.   and for background processing under multi-tasking DOS managers.
  3823.  
  3824.   While you are in a disk-video mode, your screen will display text
  3825.   information indicating whether memory or your disk drive is being used,
  3826.   and what portion of the "screen" is being read from or written to.  A
  3827.   "Cache size" figure is also displayed. 24K is the maximum cache size.
  3828.   If you see a number less than this, it means that you don't have a lot
  3829.   of memory free, and that performance will be less than optimum.  With
  3830.   a very low cache size such as 4 or 6k, performance gets considerably
  3831.   worse in cases using solid guessing, boundary tracing, plasma, or
  3832.   anything else which paints the screen non-linearly.  If you have this
  3833.  
  3834.  
  3835.                                        65
  3836.  
  3837.   problem, all we can suggest is having less TSR utilities loaded before
  3838.   starting Fractint, or changing in your config.sys file, such as reducing
  3839.   a very high BUFFERS value.
  3840.  
  3841.   The zoom box is disabled during disk-video modes (you couldn't see where
  3842.   it is anyway).  So is the orbit display feature.
  3843.  
  3844.   When using real disk for your disk-video, Fractint will not generate
  3845.   some "attractor" types (e.g. lorenz) nor "IFS" images.  These would kill
  3846.   your disk drive.  Boundary tracing is allowed - it may give your drive
  3847.   a bit of a workout, but is generally tolerable.
  3848.  
  3849.   When using a real disk, and you are not directing the file to a ram
  3850.   disk, and you aren't using a disk caching program on your machine,
  3851.   specifying BUFFERS=10 (or more) in your config.sys file is best for
  3852.   performance.  BUFFERS=10,2 or even BUFFERS=10,4 is also good.  It is
  3853.   also best to keep your disk relatively "compressed" (or "defragmented")
  3854.   if you have a utility to do this.
  3855.  
  3856.   In order to use extended memory, you must have himem.sys or an
  3857.   equivalent that supports the XMS 2.0 standard or higher.  Also, you
  3858.   can't have a VDISK installed in extended memory.  Himem.sys is
  3859.   distributed with Microsoft Windows 286/386 and 3.0.  If you have
  3860.   problems using the extended memory, try rebooting with just himem.sys
  3861.   loaded and see if that clears up the problem.
  3862.  
  3863.   If you are running background disk-video fractals under Windows 3, and you
  3864.   don't have a lot of real memory (over 2Mb), you might find it best to force
  3865.   Fractint to use real disk for disk-video modes.  (Force this by using a
  3866.   if your disk goes crazy when generating background images, which are
  3867.   supposedly using extended or expanded memory.  This problem can occur
  3868.   because, to multi-task, sometimes Windows must page an application's
  3869.   expanded or extended memory to disk, in big chunks. Fractint's own cached
  3870.   disk access may be faster in such cases.
  3871.  
  3872.   "TWEAKED" VGA MODES
  3873.   FRACTINT contains code that sets up the IBM (or any truly register-
  3874.   compatible) VGA adapter for several extended modes such as 704x528,
  3875.   736x552, 768x576, and 800x600. It does this by programming the VGA
  3876.   controller to use the fastest dot-clock on the IBM adapter (28.322 MHz),
  3877.   throwing more pixels, and reducing the refresh rate to make up for it.
  3878.  
  3879.   These modes push many monitors beyond their rated specs, in terms of both
  3880.   resolution and refresh rate. Signs that your monitor is having problems
  3881.   with a particular "tweaked" mode include:
  3882.  
  3883.   * vertical or horizontal overscan (displaying dots beyond the edges of
  3884.     your visible CRT area)
  3885.  
  3886.   * flickering (caused by a too-slow refresh rate)
  3887.  
  3888.   * vertical roll or total garbage on the screen (your monitor simply can't
  3889.     keep up, or is attempting to "force" the image into a pre-set mode that
  3890.     doesn't fit).
  3891.  
  3892.  
  3893.  
  3894.                                        66
  3895.  
  3896.   We have successfully tested the modes up to 768x576 on an IBM PS/2
  3897.   Model 80 connected to IBM 8513, IBM 8514, NEC Multisync II, and Zenith
  3898.   1490 monitors (all of which exhibit some overscan and flicker at the
  3899.   highest rates), and have tested 800x600 mode on the NEC Multisync II
  3900.   (although it took some twiddling of the vertical-size control).
  3901.  
  3902.   FRACTINT.CFG
  3903.  
  3904.   If you have a favorite adapter/video mode that you would like to add to
  3905.   FRACTINT... if you want to remove table entries that do not apply to
  3906.   your system... if you're bothered that your favorite mode requires the
  3907.   <Alt><Left-Shift><Swizzlestick> key combination... or if you are using
  3908.   a non-enhanced keyboard so that you can't USE that combination...
  3909.   relief is here, and without even learning "C"!
  3910.  
  3911.   FRACTINT will create an external, editable video configuration file
  3912.   called FRACTINT.CFG, and from then on will use that instead of its
  3913.   internal table as long as it can locate it somewhere along the DOS
  3914.   path. Enter FRACTINT BATCH=CONFIG, and you will get a default file with
  3915.   an entry for every one of the internal video table entries, and you can
  3916.   go to work on it with a text editor.
  3917.  
  3918.   Any line in the file that begins with a tab or a space (or is empty) is
  3919.   treated as a comment. The rest of the lines must consist of ten fields
  3920.   separated by commas. The ten fields are defined as:
  3921.  
  3922.   1. The name of the adapter/video mode (25 chars max, no leading
  3923.   blanks). The adapter is set up for that mode via INT 10H, with:
  3924.   2. AX = this,
  3925.   3. BX = this,
  3926.   4. CX = this, and
  3927.   5. DX = this (hey, having all these registers wasn't OUR idea!)
  3928.   6. An encoded value describing how to write to your video memory in
  3929.   that mode. Currently available codes are:
  3930.     1) Use the BIOS (INT 10H, AH=12/13, AL=color) (last resort - SLOW!)
  3931.     2) Pretend it's a (perhaps super-res) EGA/VGA
  3932.     3) Pretend it's an MCGA
  3933.     4) SuperVGA 256-Color mode using the Tseng Labs chipset
  3934.     5) SuperVGA 256-Color mode using the Paradise chipset
  3935.     6) SuperVGA 256-Color mode using the Video-7 chipset
  3936.     7) Non-Standard IBM VGA 360 x 480 x 256-Color mode
  3937.     8) SuperVGA 1024x768x16 mode for the Everex chipset
  3938.     9) TARGA video modes
  3939.    10) HERCULES video mode
  3940.    11) Non-Video, i.e. "disk-video"
  3941.    12) 8514/A video modes
  3942.    13) CGA 320x200x4-color and 640x200x2-color modes
  3943.    14) Reserved for Tandy 1000 video modes
  3944.    15) SuperVGA 256-Color mode using the Trident chipset
  3945.    16) SuperVGA 256-Color mode using the Chips & Tech chipset
  3946.    17) SuperVGA 256-Color mode using the ATI VGA Wonder chipset
  3947.    18) SuperVGA 256-Color mode using the EVEREX chipset
  3948.    19) Roll-your-own video mode (as you've defined it in YOURVID.C)
  3949.    20) SuperVGA 1024x768x16 mode for the ATI VGA Wonder chipset
  3950.    21) SuperVGA 1024x768x16 mode for the Tseng Labs chipset
  3951.  
  3952.  
  3953.                                        67
  3954.  
  3955.    22) SuperVGA 1024x768x16 mode for the Trident chipset
  3956.    23) SuperVGA 1024x768x16 mode for the Video 7 chipset
  3957.    24) SuperVGA 1024x768x16 mode for the Paradise chipset
  3958.    25) SuperVGA 1024x768x16 mode for the Chips & Tech chipset
  3959.    26) SuperVGA 1024x768x16 mode for the Everex Chipset
  3960.    27) SuperVGA Auto-Detect mode (we poke around looking for your adapter)
  3961.    28) VESA modes
  3962.  
  3963.   7. The number of pixels across the screen (X - 160 to 2048)
  3964.   8. The number of pixels down the screen (Y - 160 to 2048)
  3965.   9. The number of available colors (2, 4, 16, or 256)
  3966.   10. A comment describing this mode (25 chars max, leading blanks are OK)
  3967.  
  3968.   NOTE that the AX, BX, CX, and DX fields are generated (and read back)
  3969.   using hexadecimal notation (fifteen ==> 'f', sixteen ==> '10'), because
  3970.   that's the way most adapter documentation describes it. The other
  3971.   fields use standard decimal notation.
  3972.  
  3973.   If you look closely at the default entries, you will notice that the
  3974.   IBM VGA entries labeled "tweaked" and "non standard" have entries in
  3975.   the table with AX = BX = CX = 0, and DX = some other number. Those are
  3976.   special flags that we used to tell the program to custom-program the
  3977.   VGA adapter, and are NOT undocumented BIOS calls. Maybe they should be,
  3978.   but they aren't.
  3979.  
  3980.   If you have a fancy adapter and a new video mode that works on it, and
  3981.   it is not currently supported, PLEASE GET THAT INFORMATION TO US!  We
  3982.   will add the video mode to the list on our next release, and give you
  3983.   credit for it. Which brings up another point: If you can confirm that a
  3984.   particular video adapter/mode works (or that it doesn't), and the
  3985.   program says it is UNTESTED, please get that information to us also.
  3986.   Thanks in advance!
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.                                        68
  4013.  
  4014.   6. Fractals and the PC
  4015.  
  4016.  
  4017.   A LITTLE HISTORY
  4018.  
  4019.   Like new forms of life, new branches of mathematics and science don't
  4020.   appear from nowhere. The ideas of fractal geometry can be traced to the
  4021.   late nineteenth century, when mathematicians created shapes -- sets of
  4022.   points -- that seemed to have no counterpart in nature.  By a wonderful
  4023.   irony, the "abstract" mathematics descended from that work has now turned
  4024.   out to be MORE appropriate than any other for describing many natural
  4025.   shapes and processes.
  4026.  
  4027.   Perhaps we shouldn't be surprised.  The Greek geometers worked out the
  4028.   mathematics of the conic sections for its formal beauty; it was two
  4029.   thousand years before Copernicus and Brahe, Kepler and Newton overcame the
  4030.   preconception that all heavenly motions must be circular, and found the
  4031.   ellipse, parabola, and hyperbola in the paths of planets, comets, and
  4032.   projectiles.
  4033.  
  4034.   In the 17th century Newton and Leibniz created calculus, with its
  4035.   techniques for "differentiating" or finding the derivative of functions --
  4036.   in geometric terms, finding the tangent of a curve at any given point.
  4037.   True, some functions were discontinuous, with no tangent at a gap or an
  4038.   isolated point. Some had singularities: abrupt changes in direction at
  4039.   which the idea of a tangent becomes meaningless. But these were seen as
  4040.   exceptional, and attention was focused on the "well- behaved" functions
  4041.   that worked well in modeling nature.
  4042.  
  4043.   Beginning in the early 1870s, though, a 50-year crisis transformed
  4044.   mathematical thinking. Weierstrass described a function that was continuous
  4045.   but nondifferentiable -- no tangent could be described at any point. Cantor
  4046.   showed how a simple, repeated procedure could turn a line into a dust of
  4047.   scattered points, and Peano generated a convoluted curve that eventually
  4048.   touches every point on a plane. These shapes seemed to fall "between" the
  4049.   usual categories of one-dimensional lines, two-dimensional planes and
  4050.   three-dimensional volumes. Most still saw them as "pathological" cases, but
  4051.   here and there they began to find applications.
  4052.  
  4053.   In other areas of mathematics, too, strange shapes began to crop up.
  4054.   Poincare attempted to analyze the stability of the solar system in the
  4055.   1880s and found that the many-body dynamical problem resisted
  4056.   traditional methods. Instead, he developed a qualitative approach, a
  4057.   "state space" in which each point represented a different planetary
  4058.   orbit, and studied what we would now call the topology -- the
  4059.   "connectedness" --of whole families of orbits. This approach revealed
  4060.   that while many initial motions quickly settled into the familiar
  4061.   curves, there were also strange, "chaotic" orbits that never became
  4062.   periodic and predict-able.
  4063.  
  4064.   Other investigators trying to understand fluctuating, "noisy" phenomena
  4065.   -- the flooding of the Nile, price series in economics, the jiggling of
  4066.   molecules in Brownian motion in fluids -- found that traditional models
  4067.   could not match the data. They had to introduce apparently arbitrary
  4068.   scaling features, with spikes in the data becoming rarer as they grew
  4069.  
  4070.  
  4071.                                        69
  4072.  
  4073.   larger, but never disappearing entirely.
  4074.  
  4075.   For many years these developments seemed unrelated, but there were
  4076.   tantalizing hints of a common thread. Like the pure mathematicians'
  4077.   curves and the chaotic orbital motions, the graphs of irregular time
  4078.   series often had the property of self-similarity: a magnified small
  4079.   section looked very similar to a large one over a wide range of scales.
  4080.  
  4081.  
  4082.   WHO IS THIS GUY, ANYWAY?
  4083.  
  4084.   While many pure and applied mathematicians advanced these trends, it is
  4085.   Benoit Mandelbrot above all who saw what they had in common and pulled
  4086.   the threads together into the new discipline.
  4087.  
  4088.   He was born in Warsaw in 1924, and moved to France in 1935. In a time
  4089.   when French mathematical training was strongly analytic, he visualized
  4090.   problems whenever possible, so that he could attack them in geometric
  4091.   terms.  He attended the Ecole Polytechnique, then Caltech, where he
  4092.   encountered the tangled motions of fluid turbulence.
  4093.  
  4094.   In 1958 he joined IBM, where he began a mathematical analysis of
  4095.   electronic "noise" -- and began to perceive a structure in it, a
  4096.   hierarchy of fluctuations of all sizes, that could not be explained
  4097.   by exiting statistical methods. Through the years that followed, one
  4098.   seemingly unrelated problem after another was drawn into the growing
  4099.   body of ideas he would come to call fractal geometry.
  4100.  
  4101.   As computers gained more graphic capabilities, the skills of his mind's
  4102.   eye were reinforced by visualization on display screens and plotters.
  4103.   Again and again, fractal models produced results -- series of flood
  4104.   heights, or cotton prices -- that experts said looked like "the real
  4105.   thing."
  4106.  
  4107.   Visualization was extended to the physical world as well. In a
  4108.   provocative essay titled "How Long Is the Coast of Britain?" Mandelbrot
  4109.   noted that the answer depends on the scale at which one measures: it
  4110.   grows longer and longer as one takes into account every bay and inlet,
  4111.   every stone, every grain of sand. And he codified the "self-similarity"
  4112.   characteristic of many fractal shapes -- the reappearance of geometri-
  4113.   cally similar features at all scales.
  4114.  
  4115.   First in isolated papers and lectures, then in two editions of his
  4116.   seminal book, he argued that many of science's traditional mathematical
  4117.   models are ill-suited to natural forms and processes: in fact, that
  4118.   many of the "pathological" shapes mathematicians had discovered
  4119.   generations before are useful approximations of tree bark and lung
  4120.   tissue, clouds and galaxies.
  4121.  
  4122.   Mandelbrot was named an IBM Fellow in 1974, and continues to work at
  4123.   the IBM Watson Research Center. He has also been a visiting professor
  4124.   and guest lecturer at many universities.
  4125.  
  4126.  
  4127.  
  4128.  
  4129.  
  4130.                                        70
  4131.  
  4132.   A LITTLE CODE
  4133.  
  4134.   PERIODICITY LOGIC: The "Mandelbrot Lake" in the center of the M-set
  4135.   images is the traditional bane of plotting programs. It sucks up the
  4136.   most computer time because it always reaches the iteration limit -- and
  4137.   yet the most interesting areas are invariably right at the edge the
  4138.   lake.
  4139.  
  4140.   Thanks to Mark Peterson for pointing out (well, he more like beat us
  4141.   over the head until we paid attention) that the iteration values in the
  4142.   middle of Mandelbrot Lake tend to decay to periodic loops (i.e., Z(n+m)
  4143.   == Z(n), a fact that is pointed out on pages 58-61 of "The Beauty of
  4144.   Fractals"). An intelligent program (like the one he wrote) would check
  4145.   for this periodicity once in a while, recognize that iterations caught
  4146.   in a loop are going to max out, and bail out early.
  4147.  
  4148.   For speed purposes, the current version of the program turns this
  4149.   checking algorithm on only if the last pixel generated was in the lake.
  4150.   (The checking itself takes a small amount of time, and the pixels on
  4151.   the very edge of the lake tend to decay to periodic loops very slowly,
  4152.   so this compromise turned out to be the fastest generic answer).
  4153.  
  4154.   Try a full M-set plot with a 1000-iteration maximum with any other
  4155.   program, and then try it on this one for a pretty dramatic proof of the
  4156.   value of periodicity checking.
  4157.  
  4158.   You can get a visual display of the periodicity effects if you press
  4159.   <O>rbits while plotting. This toggles display of the intermediate
  4160.   iterations during the generation process.  It also gives you an idea of
  4161.   how much work your poor little PC is going through for you!  If you use
  4162.   this toggle, it's best to disable solid-guessing first using <1> or
  4163.   <2> because in its second pass, solid-guessing bypasses many of the
  4164.   pixel calculations precisely where the orbits are most interesting.
  4165.  
  4166.   Mark was also responsible for pointing out that 16-bit integer math was
  4167.   good enough for the first few levels of M/J images, where the round-off
  4168.   errors stay well within the area covered by a single pixel. FRACTINT
  4169.   now uses 16-bit math where applicable, which makes a big difference on
  4170.   non-32-bit PCs.
  4171.  
  4172.  
  4173.   LIMITATIONS OF INTEGER MATH (and how we now get around it)
  4174.  
  4175.   By default, FRACTINT uses 16-bit and/or 32-bit integer math to generate
  4176.   nearly all its fractal types. The advantage of integer math is speed: this
  4177.   is by far the fastest such plotter that we have ever seen on any PC. The
  4178.   disadvantage is an accuracy limit. Integer math represents numbers like
  4179.   1.00 as 32-bit integers of the form [1.00 * (2^29)] (approximately
  4180.   500,000,000 digits!) for the Mandelbrot and Julia sets. Other integer
  4181.   fractal types use a bitshift of 24 rather than 29, so 1.0 is stored
  4182.   internally as [1.00 * (2^*24)]. This yields accuracy of better than 8
  4183.   significant digits, and works fine... until the initial values of the
  4184.   calculations on consecutive pixels differ only in the ninth decimal
  4185.   place.
  4186.  
  4187.  
  4188.  
  4189.                                        71
  4190.  
  4191.   At that point, if Fractint has a floating-point algorithm handy for
  4192.   that particular fractal type (and virtually all of the fractal types
  4193.   have one these days), it will silently switch over to the
  4194.   floating-point algorithm and keep right on going.  Fair warning -
  4195.   if you don't have an FPU, the effect is that of a rocket sled hitting
  4196.   a wall of jello, and even if you do, the slowdown is noticeable.
  4197.  
  4198.   If it has no floating-point algorithm, FRACTINT does the best it can:
  4199.   it switches to its minimal drawing mode, with adjacent pixels having
  4200.   initial values differing by 1 (really 0.000000002).  Attempts to zoom
  4201.   further may result in moving the image around a bit, but won't actually
  4202.   zoom.  If you are stuck with an integer algorithm, you can reach minimal
  4203.   mode with your fifth consecutive "maximum zoom", each of which covers
  4204.   about 0.25% of the previous screen. By then your full-screen image is an
  4205.   area less than 1/(10^13)th [~0.0000000000001] the area of the initial
  4206.   screen.  (If your image is rotated or stretched very slightly, you can
  4207.   run into the wall of jello as early as the fourth consecutive maximum
  4208.   zoom.  Rotating or stretching by larger amounts has less impact on how
  4209.   soon you run into it.)
  4210.  
  4211.   Think of it this way: at minimal drawing mode, your VGA display
  4212.   would have to have a surface area of over one million square miles just
  4213.   to be able to display the entire M-set using the integer algorithms.
  4214.   Using the floating-point algorithms, your display would have to
  4215.   be big enough to fit the entire solar system out to the orbit of
  4216.   Saturn inside it.  So there's a considerable saving on hardware,
  4217.   electricity and desk space involved here.  Also, you don't have to
  4218.   take out asteroid insurance.
  4219.  
  4220.   32 bit integers also limit the largest number which can be stored.
  4221.   This doesn't matter much since numbers outside the supported range
  4222.   (which is between -4 and +4) produce a boring single color. If you
  4223.   try to zoom-out to reduce the entire Mandelbrot set to a featureless
  4224.   speck, or to squeeze it to a pancake, you'll find you can't do so
  4225.   in integer math mode.
  4226.  
  4227.   THE FRACTINT "FRACTAL ENGINE" ARCHITECTURE
  4228.  
  4229.   Several of the authors would never ADMIT this, but FRACTINT has evolved a
  4230.   powerful and flexible architecture that makes adding new fractals very
  4231.   easy. (They would never admit this because they pride themselves on being
  4232.   the sort that mindlessly but happily hacks away at code and "sees if it
  4233.   works and doesn't hang the machine".)
  4234.  
  4235.   Many fractal calculations work by taking a rectangle in the complex plane,
  4236.   and, point by point, calculating a color corresponding to that point.
  4237.   Furthermore, the color calculation is often done by iterating a function
  4238.   over and over until some bailout condition is met.
  4239.  
  4240.   In implementing such a scheme, there are three fractal-specific
  4241.   calculations that take place within a framework that is pretty much the
  4242.   same for them all.  Rather than copy the same code over and over, we
  4243.   created a standard fractal engine that calls three functions that may be
  4244.   bolted in temporarily to the engine.  The "bolting in" process uses the C
  4245.   language mechanism of variable function pointers.
  4246.  
  4247.  
  4248.                                        72
  4249.  
  4250.  
  4251.   These three functions are:
  4252.  
  4253.        1) a setup function that is run once per image, to do any
  4254.        required initialization of variables,
  4255.  
  4256.        2) a once-per-pixel function that does whatever
  4257.        initialization has to be done to calculate a color for one
  4258.        pixel, and
  4259.  
  4260.        3) a once-per-orbit-iteration function, which is the
  4261.        fundamental fractal algorithm that is repeatedly iterated in
  4262.        the fractal calculation.
  4263.  
  4264.   The common framework that calls these functions can contain all sorts of
  4265.   speedups, tricks, and options that the fractal implementor need not worry
  4266.   about.  All that is necessary is to write the three functions in the
  4267.   correct way, and BINGO! - all options automatically apply. What makes it
  4268.   even easier is that usually one can re-use functions 1) and 2) written for
  4269.   other fractals, and therefore only need to write function 3).
  4270.  
  4271.   Then it occurred to us that there might be more than one sort of fractal
  4272.   engine, so we even allowed THAT to be bolted in. And we created a data
  4273.   structure for each fractal that includes pointers to these four functions,
  4274.   various prompts, a default region of the complex plane, and various
  4275.   miscellaneous bits of information that allow toggling between Julia and
  4276.   Mandelbrot or toggling between the various kinds of math used in
  4277.   implementation.
  4278.  
  4279.   That sounds pretty flexible, but there is one drawback - you have to be a C
  4280.   programmer and have a C compiler to make use of it! So we took it a step
  4281.   further, and designed a built-in high level compiler, so that you can enter
  4282.   the formulas for the various functions in a formula file in a straight-
  4283.   forward algebra-like language, and FRACTINT will compile them and bolt them
  4284.   in for you!
  4285.  
  4286.   There is a terrible down side to this flexibility.  FRACTINT users
  4287.   everywhere are going berserk. Fractal-inventing creativity is running
  4288.   rampant. Proposals for new fractal types are clogging the mail and the
  4289.   telephones.
  4290.  
  4291.   All we can say is that non-productivity software has never been so potent,
  4292.   and we're sorry, it's our fault!
  4293.  
  4294.   FRACTINT was compiled using Microsoft C 5.1/6.0 and Microsoft Assembler
  4295.   5.1 using the "Medium" model. Note that the assembler code uses the "C"
  4296.   model option added to version 5.1, and must be assembled with the /MX or
  4297.   /ML switch to link with the "C" code. Because it has become too large to
  4298.   distribute comfortably as a single compressed file, and because many
  4299.   downloaders have no intention of ever modifying it, it is now
  4300.   distributed as two files: one containing FRACTINT.EXE, auxiliary files
  4301.   and this document, and another containing complete source code
  4302.   (including a .MAK file and MAKEFRAC.BAT).
  4303.  
  4304.  
  4305.  
  4306.  
  4307.                                        73
  4308.  
  4309.   APPENDIX A:
  4310.                        MATHEMATICS OF THE FRACTAL TYPES
  4311.  
  4312.   For functions below, "pixel" is the complex number corresponding to
  4313.   the current pixel. "Fn" can be replace by sin, cos, sinh, cosh, exp,
  4314.   log or sqr. "^" is the exponential operator, z(n) denotes the nth complex
  4315.   orbit value in the sequence z(0), z(1), ..., z(n), z(n+1),...
  4316.  
  4317.  
  4318.   Fractal Type(s)             Formula(s) used
  4319.   -----------------------     ---------------------------------------------
  4320.   Mandel, Julia               z(n+1) = z(n)^2 + C
  4321.   Newton, Newtbasin           (roots of) z^n - 1, where n is an integer
  4322.   ComplexNewton, ComplexBasin (roots of) z^a - b, where a,b are complex
  4323.   plasma                      (see the Plasma section for details)
  4324.   Mandelfn, Lambdafn           z(n+1) = Lambda * fn(z(n)) + C (function=sin,
  4325.                                 cos, sinh, cosh, exp, log, or sqr)
  4326.   BarnsleyM1, BarnsleyJ1      z(n+1) = (z(n)-1) * C if Real(z) >= 0
  4327.                                else    (z(n)+1) * modulus(C)/C
  4328.   BarnsleyM2, BarnsleyJ2      z(n+1) = (z(n)-1) * C if Real(z(n))*Imag(C)
  4329.                                        +Real(C)*Imag(z(n)) >= 0
  4330.                                else    (z(n)+1) * C
  4331.   BarnsleyM3, BarnsleyJ3      z(n+1) = (Real(z(n))^2 - Imag(z(n))^2 - 1)
  4332.                                       + i * (2 * Real(z((n)) * Imag(z((n)))
  4333.                                         if Real(z(n) > 0
  4334.                                else    (Real(z(n))^2 - Imag(z(n))^2 - 1
  4335.                                       + lambda * Real(z(n))
  4336.                                       + i * (2 * Real(z((n)) * Imag(z((n))
  4337.                                              + lambda * Real(z(n))
  4338.   Sierpinski                  z(n+1) = (2x, 2y - 1) if y > .5
  4339.                                else    (2x - 1, 2y) if x > .5
  4340.                                else    (2X, 2y)
  4341.   MandelLambda, Lambda        z(n+1) = (C) * (z(n)^2) + C
  4342.   MarksMandel, MarksJulia     z(n+1) = (C^(Period-1)) * (z(n)^2) + C
  4343.                               ("Period" is a parameter)
  4344.   Cmplxmarksmand,Cmplxmarksjul Same as MarksMandel and MarksJulia except
  4345.                               period parameter is complex rather than real
  4346.   Unity                       (see the Unity section for details)
  4347.   ifs, ifs3D                  (see the IFS section for details)
  4348.   Mandel4, Julia4             z(n+1) = z(n)^4 + C
  4349.   Test                        (as distributed, as simple Mandelbrot fractal)
  4350.   Manfn+zsqrd, Julfn+zsqrd    z(n+1) =  fn(z(n)) + z(n)^2 + C
  4351.   Manzpower, Julzpower        z(n+1) = z(n)^M + C (M is a parameter)
  4352.   Mandel4/Julia4              Special case of manzpower and julzpower (M=4)
  4353.   Manzzpwr, Julzzpwr          z(n+1) = z(n)^z(n) + z(n)^M + C
  4354.   Manfn+exp, Julfn+exp        z(n+1) = fn(z(n)) + e^(z(n)) + C
  4355.   popcorn                     z(n+1) = x(n+1) + i * y(n+1), where
  4356.                               x(n+1) = x(n) - 0.05*sin(y(n)) + tan(3*y(n))
  4357.                               y(n+1) = y(n) - 0.05*sin(x(n)) + tan(3*x(n))
  4358.   popcornjul                  Julia calculation from the popcorn formula.
  4359.   Bifurcation                 (see the Bifurcation section for details)
  4360.   Bif+sinpi
  4361.   Bif=sinpi
  4362.   Biflambda
  4363.  
  4364.  
  4365.  
  4366.                                        74
  4367.  
  4368.   Lorenz, Lorenz3d            Lorenz Attractor - orbits of differential
  4369.                               equation:
  4370.                               dx/dt = -a*x + a*y
  4371.                               dy/dt =  b*x - y   -z*x
  4372.                               dz/dt = -c*z + x*y
  4373.                               Solution generated by 1st order Taylor series:
  4374.                               xnew = x + (-a*x*dt) + (a*y*dt)
  4375.                               ynew = y + (b*x*dt) - (y*dt) - (z*x*dt)
  4376.                               znew = z + (-c*z*dt) + (x*y*dt)
  4377.                               (defaults: dt = .02, a = 5, b = 15, c = 1)
  4378.                               (Lorenz3D is the Lorenz Attractor with the
  4379.                               addition of 3D perspective transformations
  4380.                               as specified by the IFS <E>ditor's
  4381.                               transformation option)
  4382.   Rossler3d                   Orbit is solution to differential equation:
  4383.                               dx/dt = -y -z
  4384.                               dy/dt = x + a*y
  4385.                               dz/dt = b + x*z - c*z
  4386.                               Solution via first order Taylor series:
  4387.                               xnew = x - y*dt -   z*dt
  4388.                               ynew = y + x*dt + a*y*dt
  4389.                               znew = z + b*dt + x*z*dt - c*z*dt
  4390.                               Default params are dt=.04, a=.2, b=.2, c=5.7
  4391.   Henon                       Orbit generated by:
  4392.                               xnew =  1 + y - a*x*x
  4393.                               ynew =  b*x
  4394.                               The default parameters are a=1.4 and b=.3.
  4395.   Pickover                    Orbit generated by:
  4396.                               xnew = sin(a*y) - z*cos(b*x)
  4397.                               ynew = z*sin(c*x) - cos(d*y)
  4398.                               znew = sin(x)
  4399.                               Default params: a=2.24, b=.43, c=-.65, d=-2.43
  4400.   Gingerbreadman              Orbit generated by:
  4401.                               xnew = 1 - y + |x|
  4402.                               ynew = x
  4403.   Diffusion                   See diffusion type description
  4404.   Julibrot                    Same as Mandel and Julia - see type description
  4405.  
  4406.  
  4407.   fn(z*z)                     z(0)=pixel; z(n+1) = fn(z(n)*z(n))
  4408.   fn*fn                       z(0)=pixel; z(n+1) = fn(n)*fn(n)
  4409.   fn*z+z                      z(0)=pixel; z(n+1) = p1*fn(z(n))+p2*z(n)
  4410.   fn+fn                       z(0)=pixel; z(n+1) = p1*fn1(z(n))+p2*fn2(z(n))
  4411.   sqr(1/fn)                   z(0)=pixel; z(n+1) = (1/fn(z(n))*(1/fn(z(n))
  4412.   sqr(fn)                     z(0)=pixel; z(n+1) = fn(z(n))*fn(z(n))
  4413.   spider                      c(0)=z(0) = pixel; z(n+1) = z(n)*z(n) + c(n);
  4414.                               c(n+1) = c(n)/2 + z(n+1)
  4415.   manowar                     c = z1(0) = z(0) = Xcoord + i*Ycoord;
  4416.                               z(n+1) = z(n)^2 + z1(n) + c;
  4417.                               z1(n+1) = z(n);
  4418.   tetrate                     z(0) = c = pixel; z(n+1) = c^z(n)
  4419.   kamtorus, kamtorus3d        (See kamtorus type description for details)
  4420.  
  4421.   magnetj1,j2,m1,m2           (See type descriptions for details)
  4422.  
  4423.  
  4424.  
  4425.                                        75
  4426.  
  4427.   INSIDE=bof60|bof61
  4428.  
  4429.   Here is an *ATTEMPTED* explanation of what the inside=bof60 and
  4430.   inside=bof61 options do. This explanation is hereby dedicated to Adrian
  4431.   Mariano, who badgered it out of us! For the *REAL* explanation, see "Beauty
  4432.   of Fractals", page 62. Let p(z) be the function that is repeatedly iterated
  4433.   to generate a fractal using the escape-time algorithm.  For example, p(z) =
  4434.   z^2+c in the case of a Julia set. Then let pk(z) be the result of iterating
  4435.   the function p for k iterations. (The "k" should be shown as a
  4436.   superscript.) We could also use the notation pkc(z) when the function p has
  4437.   a parameter c, as it does in our example.  Now hold your breath and get
  4438.   your thinking cap on. Define a(c) = inf{|pck(0)|:k=1,2,3,...}. In English -
  4439.   a(c) is the greatest lower bound of the images of zero of as many
  4440.   iterations as you like. Put another way, a(c) is the closest to the origin
  4441.   any point in the orbit starting with 0 gets. Then the index (c) is the
  4442.   value of k (the iteration) when that closest point was achieved.  Since
  4443.   there may be more than one, index(c) is the least such. Got it?  Good,
  4444.   because the "Beauty of Fractals" explanation of this, is, ahhhh, *TERSE* !
  4445.   Now for the punch line. Inside=bof60 colors the lake alternating shades
  4446.   according to the level sets of a(c).  Each band represents solid areas of
  4447.   the fractal where the closest value of the orbit to the origin is the same.
  4448.   Inside=bof61 show domains where index(c) is constant.  That is, areas where
  4449.   the iteration when the orbit swooped closest to the origin has the same
  4450.   value. Well, folks, that's the best we can do! Improved explanations will
  4451.   be accepted for the next edition!
  4452.  
  4453.   FINITE ATTRACTORS (inside=attractor)
  4454.  
  4455.   Many of Fractint's fractals involve the iteration of functions of
  4456.   complex numbers until some "bailout" value is exceeded, then coloring
  4457.   the associated pixel according to the number of iterations performed.
  4458.   This process identifies which values tend to infinity when iterated,
  4459.   and gives us a rough measure of how "quickly" they get there.
  4460.  
  4461.   In dynamical terms, we say that "Infinity is an Attractor", as many
  4462.   initial values get "attracted" to it when iterated.  The set of all
  4463.   points that are attracted to infinity is termed The Basin of Attraction
  4464.   of Infinity.  The coloring algorithm used divides this Basin of
  4465.   Attraction into many distinct sets, each a single band of one color,
  4466.   representing all the points that are "attracted" to Infinity at the
  4467.   same "rate".  These sets (bands of color) are termed "Level Sets" - all
  4468.   points in such a set are at the same "Level" away from the attractor,
  4469.   in terms of numbers of iterations required to exceed the bailout value.
  4470.  
  4471.   Thus, Fractint produces colored images of the Level Sets of the Basin
  4472.   of Attraction of Infinity, for all fractals that iterate functions of
  4473.   Complex numbers, at least.   This discussion so far has served two
  4474.   purposes.  First, we now have a sound mathematical definition of what
  4475.   Fractint's "bailout" processing generates.  Secondly, we have formally
  4476.   introduced the terms Attractor, Basin of Attraction, and Level Set, so
  4477.   you should have little trouble following the rest of this section !
  4478.  
  4479.   Early versions of Fractint could only handle one Attractor: Infinity.
  4480.   Now, however, for certain Julia-type fractals, Fractint can also
  4481.   display the Level Sets of Basins of Attraction of Finite Attractors.
  4482.  
  4483.  
  4484.                                        76
  4485.  
  4486.   This capability is a by-product of the implementation of the MAGNETic
  4487.   fractal types, which always have at least one Finite Attractor.
  4488.  
  4489.   Most Julia-types that have a "lake" (normally colored blue by default)
  4490.   have a Finite Attractor within this lake, and the lake turns out to be,
  4491.   quite appropriately, the Basin of Attraction of this Attractor.
  4492.  
  4493.   The "inside=attractor" command (invoked from the command line or using
  4494.   the "X" menu) instructs Fractint to seek out and identify a possible
  4495.   Finite Attractor and, if one is found, attempt to display the Level Sets
  4496.   of its Basin of Attraction, in addition to those of the Basin of Attraction
  4497.   of Infinity.  In many cases this results in a "lake" with colored "waves"
  4498.   in it;  in other cases there may be little change in the lake's
  4499.   appearance.
  4500.  
  4501.   For a quick demonstration, select a fractal type of LAMBDA, with a
  4502.   parameter of 0.5 + 0.5i.  You will obtain an image with a large blue
  4503.   lake.  Now set "inside=attractors" with the "X" menu. The Image will be
  4504.   re-drawn from scratch, this time with a much more colorful lake.  A Finite
  4505.   Attractor lives in the centre of one of the resulting "ripple" patterns in
  4506.   the lake - turn the <O>rbits display on if you want to see where it is
  4507.   - the orbits of all initial points that are in the lake converge there.
  4508.  
  4509.   Fractint tests for the presence of a Finite Attractor by iterating a
  4510.   Critical Value of the fractal's function, without periodicity checking,
  4511.   before starting to draw the image.  If the iteration limit is exceeded
  4512.   before the bailout value, we're looking good.  In this case, we iterate
  4513.   again, from where we left off.  If this second pass remains bounded,
  4514.   too, it is almost certain that we have a Finite Attractor.  As an added
  4515.   bonus, iterating the function for twice the normal maximum time usually
  4516.   yields a very good approximation of the value of the Finite Attractor.
  4517.  
  4518.   Having thus located a Finite Attractor, we define a small circle around
  4519.   it and, after each iteration, as well as testing for the usual bailout
  4520.   value being exceeded, we test to see if we've hit the circle. If so, we
  4521.   bail out and color our pixels according to the number of iterations
  4522.   performed.  Result - a nicely colored-in lake that displays the Level
  4523.   Sets of the Basin of Attraction of the Finite Attractor.  Sometimes !
  4524.  
  4525.   First exception : This does not work for the lakes of Mandel-types.
  4526.   Every point in a Mandel-type is, in effect, a single point plucked from
  4527.   one of its related Julia-types.  A Mandel-type's lake has an infinite
  4528.   number of points, and thus an infinite number of related Julia-type
  4529.   sets, and consequently an infinite number of finite attractors too.  It
  4530.   *MAY* be possible to color in such a lake, by determining the attractor
  4531.   for EVERY pixel, but this would probably treble (at least) the number
  4532.   of iterations needed to draw the image.  Due to this overhead, Finite
  4533.   Attractor logic has not been implemented for Mandel-types.
  4534.  
  4535.   Secondly, certain Julia-types with lakes may not respond to this
  4536.   treatment, depending on the parameter value used.  Eg, the Lambda Set
  4537.   for 0.5 + 0.5i responds well; the Lambda Set for 0.0 + 1.0i does not -
  4538.   its lake stays blue.  Attractors that consist of single points, or a
  4539.   cycle of a finite number of points are ok.  Others are not.  If you're
  4540.   into fractal technospeke, the implemented approach fails if the Julia-
  4541.  
  4542.  
  4543.                                        77
  4544.  
  4545.   type is a Parabolic case, or has Siegel Disks, or has Herman Rings.
  4546.  
  4547.   However, all the difficult cases have one thing in common - they all
  4548.   have a parameter value that falls exactly on the edge of the related
  4549.   Mandel-type's lake.  You can avoid them by intelligent use of the
  4550.   Mandel-Julia Space-Bar toggle:  Pick a view of the related Mandel-type
  4551.   where the centre of the screen is inside the lake, but not too close to
  4552.   its edge, then use the space-bar toggle.  You should obtain a usable
  4553.   Julia-type with a lake, if you follow this guideline.
  4554.  
  4555.   Thirdly, the initial implementation only works for Julia-types that use
  4556.   the "Standard" fractal engine in Fractint.  Fractals with their own
  4557.   special algorithms are not affected by Finite Attractor logic, as yet.
  4558.  
  4559.   Despite these restrictions, the Finite Attractor logic can produce
  4560.   interesting results.  Just bear in mind that it is principally a bonus
  4561.   off-shoot from the development of the MAGNETic fractal types, and is
  4562.   not specifically tuned for optimal performance for other Julia types.
  4563.  
  4564.   (Thanks to Kevin Allen for the above).
  4565.  
  4566.   The following trig identities are invaluable for coding fractals that
  4567.   use complex-valued transcendental functions.
  4568.  
  4569.      e^(x+iy) = (e^x)cos(y) + i(e^x)sin(y)
  4570.      sin(x+iy) = sin(x)cosh(y) + icos(x)sinh(y)
  4571.      cos(x+iy) = cos(x)cosh(y) - isin(x)sinh(y)
  4572.      sinh(x+iy) = sinh(x)cos(y) + icosh(x)sin(y)
  4573.      cosh(x+iy) = cosh(x)cos(y) + isinh(x)sin(y)
  4574.      ln(x+iy) = (1/2)ln(x*x + y*y) + i(arctan(y/x) + 2kPi)
  4575.                                       (k = 0, +-1, +-2, +-....)
  4576.  
  4577.                        sin(2x)               sinh(2y)
  4578.      tan(x+iy) = ------------------  + i------------------
  4579.                  cos(2x) + cosh(2y)     cos(2x) + cosh(2y)
  4580.  
  4581.                       sinh(2x)                sin(2y)
  4582.      tanh(x+iy) = ------------------ + i------------------
  4583.                   cosh(2x) + cos(2y)    cosh(2x) + cos(2y)
  4584.  
  4585.          z^z = e^(log(z)*z)
  4586.          log(x + iy) = 1/2(log(x*x + y*y) + i(arc_tan(y/x))
  4587.          e^(x + iy) = (cosh(x) + sinh(x)) * (cos(y) + isin(y))
  4588.                      = e^x * (cos(y) + isin(y))
  4589.                      = (e^x * cos(y)) + i(e^x * sin(y))
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.  
  4597.  
  4598.  
  4599.  
  4600.  
  4601.  
  4602.                                        78
  4603.  
  4604.   APPENDIX B
  4605.                       STONE SOUP WITH PIXELS: THE AUTHORS
  4606.  
  4607.   Once upon a time, somewhere in Eastern Europe, there was a great
  4608.   famine. People jealously hoarded whatever food they could find, hiding
  4609.   it even from their friends and neighbors. One day a peddler drove his
  4610.   wagon into a village, sold a few of his wares, and began asking ques-
  4611.   tions as if he planned to stay for the night.
  4612.  
  4613.   [No!  No!  It was three Russian Soldiers! - Lee Crocker]
  4614.   [Wait!  I heard it was a Wandering Confessor! - Doug Quinn]
  4615.   [Well *my* kids have a book that uses Russian Soldiers! - Bert]
  4616.   [Look, who's writing this documentation, anyway? - Monte] [Ah, but who
  4617.   gets it *last* and gets to upload it? - Bert]
  4618.  
  4619.   "There's not a bite to eat in the whole province," he was told. "Better
  4620.   keep moving on."
  4621.  
  4622.   "Oh, I have everything I need," he said. "In fact, I was thinking of
  4623.   making some stone soup to share with all of you." He pulled an iron
  4624.   cauldron from his wagon, filled it with water, and built a fire under
  4625.   it. Then, with great ceremony, he drew an ordinary-looking stone from a
  4626.   velvet bag and dropped it into the water.
  4627.  
  4628.   By now, hearing the rumor of food, most of the villagers had come to
  4629.   the square or watched from their windows. As the peddler sniffed the
  4630.   "broth" and licked his lips in anticipation, hunger began to overcome
  4631.   their skepticism.
  4632.  
  4633.   "Ahh," the peddler said to himself rather loudly, "I do like a tasty
  4634.   stone soup. Of course, stone soup with CABBAGE -- that's hard to beat."
  4635.  
  4636.   Soon a villager approached hesitantly, holding a cabbage he'd retrieved
  4637.   from its hiding place, and added it to the pot. "Capital!" cried the
  4638.   peddler. "You know, I once had stone soup with cabbage and a bit of
  4639.   salt beef as well, and it was fit for a king."
  4640.  
  4641.   The village butcher managed to find some salt beef...and so it went,
  4642.   through potatoes, onions, carrots, mushrooms, and so on, until there
  4643.   was indeed a delicious meal for all. The villagers offered the peddler
  4644.   a great deal of money for the magic stone, but he refused to sell and
  4645.   traveled on the next day. And from that time on, long after the famine
  4646.   had ended, they reminisced about the finest soup they'd ever had.
  4647.  
  4648.                                   ***
  4649.  
  4650.   That's the way FRACTINT has grown, with quite a bit of magic, although
  4651.   without the element of deception. (You don't have to deceive programmers
  4652.   to make them think that hours of painstaking, often frustrating work is
  4653.   fun... they do it to themselves.)
  4654.  
  4655.   It wouldn't have happened, of course, without Benoit Mandelbrot and the
  4656.   explosion of interest in fractal graphics that has grown from his work
  4657.   at IBM. Or without the example of other Mandelplotters for the PC. Or
  4658.   without those wizards who first realized you could perform Mandelbrot
  4659.  
  4660.  
  4661.                                        79
  4662.  
  4663.   calculations using integer math (it wasn't us - we just recognize good
  4664.   algorithms when we steal--uhh--see them).  Or those graphics experts
  4665.   who hang around the Compuserve PICS forum and keep adding video modes
  4666.   to the program.  Or...
  4667.  
  4668.  
  4669.   A WORD ABOUT THE AUTHORS
  4670.  
  4671.   FRACTINT is the result of a synergy between the main authors, many
  4672.   contributors, and published sources.  All four of the main authors have had
  4673.   a hand in many aspects of the code.  However, each author has certain areas
  4674.   of greater contribution and creativity.  Since there is not room in the
  4675.   help screen for the contributions of the main authors, we list these here
  4676.   to facilitate those who would like to communicate with us on particular
  4677.   subjects.
  4678.  
  4679.   Bert Tyler is the original author.  He wrote the "blindingly fast" 386-
  4680.   specific 32 bit integer math code and the original video mode logic.  More
  4681.   than any of the authors, he has personally touched and massaged the entire
  4682.   source. His forte is writing fast 80x86 assembler, his knowledge of a
  4683.   variety of video hardware, and his skill at hacking up the code we send
  4684.   him!
  4685.  
  4686.   Bert has a BA in mathematics from Cornell University.  He has been in
  4687.   programming since he got a job at the computer center in his sophomore year
  4688.   at college - in other words, he hasn't done an honest day's work in his
  4689.   life.  He has been known to pass himself off as a PC expert, a UNIX expert,
  4690.   a statistician, and even a financial modeling expert.  He is currently
  4691.   masquerading as an independent PC consultant, supporting the PC-to-
  4692.   Mainframe communications environment at NIH.  If you sent mail from the
  4693.   Internet to an NIH staffer on his 3+Mail system, it was probably Bert's
  4694.   code that mangled it during the Internet-to-3+Mail conversion.  He also
  4695.   claims to support the MS-Kermit environment at NIH. Fractint is Bert's
  4696.   first effort at building a graphics program.
  4697.  
  4698.   Tim Wegner contributed the original implementation of palette animation,
  4699.   and is responsible for most of the 3D mechanisms.  He provided the main
  4700.   outlines of the "StandardFractal" engine and data structures, and is
  4701.   accused by his cohorts of being "obsessed with options".  Tim is quite
  4702.   proud of having originally integrated the 256 color super VGA modes in
  4703.   FRACTINT, especially since he knows almost nothing about it!
  4704.  
  4705.   Tim has BA and MA degrees in mathematics from Carleton College and the
  4706.   University of California Berkeley.  He worked for 7 years overseas as a
  4707.   volunteer, doing things like working with Egyptian villagers building water
  4708.   systems. Since returning to the US in 1982, he has written shuttle
  4709.   navigation software, a software support environment prototype, and
  4710.   supported strategic information planning, all at NASA's Johnson Space
  4711.   Center.
  4712.  
  4713.   Mark Peterson invented the periodicity detection logic, several original
  4714.   fractal types, transcendental function libraries, alternate math
  4715.   implementations, the formula compiler, and the "Julibrot" intrinsic 3D
  4716.   fractals - in other words, most of the truly original ideas in FRACTINT!
  4717.  
  4718.  
  4719.  
  4720.                                        80
  4721.  
  4722.   Mark's knowledge of higher mathematics and programming was achieved almost
  4723.   entirely through self-study.  Currently he works as a real-time supervisor
  4724.   of the electrical transmission system for Connecticut and Massachusetts.
  4725.   When not hard at work on programming projects he relaxes with Karate and
  4726.   Judo.
  4727.  
  4728.   Pieter Branderhorst is a late-comer to the group who likes to distract the
  4729.   other authors with enhancements impacting at least 1/2 of the source files
  4730.   at once.  His contributions include super solid guessing, image rotation,
  4731.   resume, and fast disk caching.
  4732.  
  4733.   Pieter left high school to work with computers, back when huge machines had
  4734.   64k of core.  He's been happily computing since, mostly programming and
  4735.   designing software from comms firmware to database and o/s, and anything
  4736.   between, and large scale online transaction processing applications.  He
  4737.   has worked as a free-lance computer consultant (whatever that means) since
  4738.   1983.
  4739.  
  4740.  
  4741.   Accessing the Authors
  4742.   ======================================
  4743.  
  4744.   Communication between the authors for development of the next version
  4745.   of FRACTINT takes place in COMART (Computer Art) Section 15 (Fractals)
  4746.   of CompuServe (CIS).  Access to this area is open to any and all
  4747.   interested in computer generated fractals.  Stop on by if you have
  4748.   any questions or just want to take a peek at what's getting tossed
  4749.   into the soup!
  4750.  
  4751.   Also, you'll find many GIF image files generated by fellow Fractint
  4752.   fans and many fractal programs as well in that forum's data library 15.
  4753.  
  4754.   The following authors have agreed to the distribution of their
  4755.   addresses. Usenet/Internet/Bitnet/Whatevernet users can reach CIS users
  4756.   directly if they know the user ID (i.e., Bert Tyler can be reached as
  4757.   73477.433@compuserve.com).
  4758.  
  4759.   Just remember that CIS charges by the minute, so it costs us a little
  4760.   bit to read a message -- don't kill us with kindness. And don't send
  4761.   all your mail to Bert -- spread it around a little!
  4762.  
  4763.   Main authors:
  4764.  
  4765.   Bert Tyler              [73477,433] on CIS
  4766.   Tyler Software          btyler on BIX
  4767.   124 Wooded Lane
  4768.   Villanova, PA 19085
  4769.   (215) 525-6355
  4770.  
  4771.   Timothy Wegner          [71320,675] on CIS
  4772.   4714 Rockwood           nmittiw@mwvm.mitre.org on Internet
  4773.   Houston, TX 77004       twegner@mwunix.mitre.org on Internet
  4774.   (713) 747-7543
  4775.  
  4776.  
  4777.  
  4778.  
  4779.                                        81
  4780.  
  4781.   Mark C. Peterson        [70441,3353] on CIS
  4782.   253 West St., H
  4783.   Plantsville, CT 06479
  4784.   (203) 276-9474 (voice)
  4785.  
  4786.   Pieter Branderhorst     [72611,2257] on CIS
  4787.   Amthor Computer Consultants
  4788.   3915 Bedford Rd.
  4789.   Victoria, B.C., Canada V8N 4K6
  4790.   (604) 477-1197
  4791.  
  4792.  
  4793.   Contributing authors (list alphabetically);
  4794.  
  4795.   Kevin Allen
  4796.   PO Box 335
  4797.   Seven Hills
  4798.   NSW 2147
  4799.   Australia
  4800.  
  4801.   Rob Beyer               [71021,2074] on CIS
  4802.   23 Briarwood Lane
  4803.   Laguna Hills, CA, 92656
  4804.   (714) 831-7665
  4805.   (7-12pm PST & weekends)
  4806.  
  4807.  
  4808.   Michael D. Burkey       burkey@sun9.math.utk.edu on Internet
  4809.   6600 Crossgate Rd.
  4810.   Knoxville, TN 37912
  4811.  
  4812.   Lee Daniel Crocker      [73407,2030] on CIS
  4813.   1380 Jewett Avenue      lcrocker on BIX
  4814.   Pittsburg, CA 94565     ames!pacbell!sactoh0!siva!lee on Usenet
  4815.   (408) 354-8001
  4816.  
  4817.   Monte Davis             [71450,3542] on CIS
  4818.   31 Washington St
  4819.   Brooklyn, NY 11201
  4820.   (718) 625-4610
  4821.  
  4822.   Richard Finegold        [76701,153] on CIS
  4823.   1414 179th Ave NE       richg@blake.acs.washington.edu on InterNET
  4824.   Bellevue, WA 98008      uw-beaver!blake!richg on UseNET
  4825.   (206) 746-2694
  4826.  
  4827.   David Guenther          [70531,3525] on CIS
  4828.   50 Rockview Drive
  4829.   Irvine, CA 92715
  4830.  
  4831.   Michael L. Kaufman      [71610,431] on CIS
  4832.   2247 Ridge Ave, #2K     (also accessible via EXEC-PC bbs)
  4833.   Evanston, IL, 60201
  4834.   (708) 864-7916
  4835.  
  4836.  
  4837.  
  4838.                                        82
  4839.  
  4840.   Adrian Mariano           theorem@blake.acs.washington.edu on INTERNET
  4841.   2729 72nd AVE SE
  4842.   Mercer Island, WA 98040
  4843.  
  4844.   Joe McLain              [75066,1257] on CIS
  4845.   McLain Imaging
  4846.   2417 Venier
  4847.   Costa Mesa, CA 92627
  4848.   (714) 642-5219
  4849.  
  4850.   Bob Montgomery          [73357,3140] on CIS
  4851.   (Author of VPIC)
  4852.   132 Parsons Road
  4853.   Longwood, Fl  32779
  4854.  
  4855.   Marc Reinig             [72410,77] on CIS
  4856.   3415 Merrill Rd.        marco@sun.com!daver!cypress on Usenet
  4857.   Aptos, CA. 95003        abu on BIX
  4858.   (408) 475-2132
  4859.  
  4860.   Lee H. Skinner
  4861.   P.O. Box 14944
  4862.   Albuquerque, NM  87191
  4863.  
  4864.   Dean Souleles           [75115,1671] on CIS
  4865.   8840 Collett Ave.
  4866.   Sepulveda, CA  91343
  4867.   (818) 893-7558
  4868.  
  4869.   Scott Taylor                  [72401,410] on CIS
  4870.   1901 South County Road 23E    DGWM18A on Prodigy
  4871.   Berthoud, CO 80513
  4872.   (303) 651-6692
  4873.  
  4874.   Paul Varner             [73237,441] on CIS
  4875.   PO Box 930
  4876.   Shepherdstown, WV 25443
  4877.   (304) 876-2011
  4878.  
  4879.   Phil Wilson             [76247,3145] on CIS
  4880.   410 State St., #55
  4881.   Brooklyn, NY 11217
  4882.   (718) 624-5272
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891.  
  4892.  
  4893.  
  4894.  
  4895.  
  4896.  
  4897.                                        83
  4898.  
  4899.   APPENDIX C
  4900.                                REVISION HISTORY
  4901.  
  4902.   Features first appearing in:
  4903.   ===========================
  4904.  
  4905.   Version 13.0, 5/90
  4906.  
  4907.   F1 was made the help key.
  4908.     Use F1 for help
  4909.     Use F9 for EGA 320x200x16 video mode
  4910.     Use CF4 for EGA 640x200x16 mode (if anybody uses that mode)
  4911.  
  4912.   Super-Solid-guessing (three or more passes) from Pieter Branderhorst
  4913.     (replaces the old solid-guessing mode)
  4914.  
  4915.   Boundary Tracing option from David Guenther
  4916.     ("fractint passes=btm", or use the new 'x' options screen)
  4917.  
  4918.   "outside=nnn" option sets all points not "inside" the fractal
  4919.     to color "nnn" (and generates a two-color image).
  4920.  
  4921.   'x' option from the main menu brings up a full-screen menu of many
  4922.     popular options and toggle switches
  4923.  
  4924.   "Speed Key" feature for fractal type selection (either use the
  4925.     cursor keys for point-and-shoot, or just start typing the name of
  4926.     your favorite fractal type)
  4927.  
  4928.   "Attractor" fractals (Henon, Rossler, Pickover, Gingerbread)
  4929.  
  4930.   Diffusion fractal type by Adrian Mariano
  4931.  
  4932.   "type=formula" formulas from Scott Taylor and Lee H. Skinner.
  4933.  
  4934.   "sound=" options for attractor fractals
  4935.     Sound=x  plays speaker tones according to the 'x' attractor value
  4936.     Sound=y  plays speaker tones according to the 'y' attractor value
  4937.     Sound=z  plays speaker tones according to the 'z' attractor value
  4938.     (These options are best invoked with the floating-point algorithm
  4939.     flag set.)
  4940.  
  4941.   "hertz=" option for adjusting the "sound=x/y/z" output.
  4942.  
  4943.   Printer support for color printers (printer=color) from Kurt Sowa
  4944.  
  4945.     Trident 4000 and Oak Technologies SuperVGA support from John Bridges
  4946.     Improved 8514/A support (the zoom-box keeps up with the cursor keys now!)
  4947.     Tandy 1000 640x200x16 mode from Brian Corbino (which does not, as yet,
  4948.        work with the F1(help) and TAB functions)
  4949.  
  4950.   The Julibrot fractal type and the Starmap option now automatically
  4951.     verify that they have been selected with a 256-color palette, and
  4952.     search for, and use, the appropriate GLASSESn.MAP or ALTERN.MAP
  4953.     palette map when invoked.  *You* were supposed to be doing that
  4954.  
  4955.  
  4956.                                        84
  4957.  
  4958.     manually all along, but *you* probably never read the docs, huh?
  4959.  
  4960.   Bug Fixes:
  4961.  
  4962.     TAB key now works after R(estore) commands
  4963.  
  4964.     PS/2 Model 30 (MCGA) adapters should be able to select 320x200x256
  4965.       mode again (we think)
  4966.  
  4967.     Everex video adapters should work with the Autodetect modes again
  4968.       (we think)
  4969.  
  4970.   Version 12.0, 3/90
  4971.  
  4972.   New SuperVGA Autodetecting and VESA Video modes (you tell us the
  4973.     resolution you want, and we'll figure out how to do it)
  4974.   New Full-Screen Entry for most prompting
  4975.   New Fractal formula interpreter ('type=formula') - roll your own
  4976.     fractals without using a "C" compiler!
  4977.   New 'Julibrot' fractal type
  4978.   Added floating point option to all remaining fractal types.
  4979.   Real (funny glasses) 3D - Now with "real-time" lorenz3D!!
  4980.   Non-Destructive <TAB> - Check out what your fractal parameters are
  4981.     without stopping the generation of a fractal image
  4982.   New Cross-Hair mode for changing individual palette colors (VGA only)
  4983.   Zooming beyond the limits of Integer algorithms (with automatic
  4984.     switchover to a floating-point algorithm when you zoom in "too far")
  4985.   New 'inside=bof60', 'inside=bof61' ("Beauty of Fractals, Page nn") options
  4986.   New starmap ('a' - for astrology? astronomy?) transformation option
  4987.   Restrictions on the options available when using Expanded Memory
  4988.     "Disk/RAM" video mode have been removed
  4989.   And a lot of other nice little clean-up features that we've already
  4990.     forgotten that we've added...
  4991.   Added capability to create 3D projection images (just barely) for people
  4992.     with 2 or 4 color video boards.
  4993.  
  4994.   Version 11.0, 1/90
  4995.  
  4996.   More fractal types
  4997.      mandelsinh/lambdasinh        mandelcosh/lambdacosh
  4998.      mansinzsqrd/julsinzsqrd      mansinexp/julsinexp
  4999.      manzzprw/julzzpwr            manzpower/julzpower
  5000.      lorenz (from Rob Beyer)      lorenz3d
  5001.      complexnewton                complexbasin
  5002.      popcorn
  5003.  
  5004.   Most fractal types given an integer and a floating point algorithm.
  5005.   "Float=yes" option now determines whether integer or floating-point
  5006.        algorithms are used for most fractal types
  5007.   "F" command toggles the use of floating-point algorithms, flagged in
  5008.        the <Tab> status display
  5009.   8/16/32/../256-Way decomposition option (from Richard Finegold)
  5010.   "Biomorph=", "bailout=", "symmetry="  and "askvideo=" options
  5011.   "T(ransform)" option in the IFS editor lets you select 3D options (used
  5012.        with the Lorenz3D fractal type)
  5013.  
  5014.  
  5015.                                        85
  5016.  
  5017.   The "T(ype)" command uses a new "Point-and-Shoot" method of selecting
  5018.        fractal types rather than prompting you for a type name
  5019.   Bug fixes to continuous-potential algorithm on integer fractals, GIF
  5020.        encoder, and IFS editor
  5021.  
  5022.   Version 10.0, 11/89
  5023.  
  5024.   Barnsley IFS type (Rob Beyer)
  5025.   Barnsley IFS3D type
  5026.   MandelSine/Cos/Exp type
  5027.   MandelLambda/MarksLambda/Unity type
  5028.   BarnsleyM1/J1/M2/J2/M3/J3 type
  5029.   Mandel4/Julia4 type
  5030.   Sierpinski gasket type
  5031.   Demm/Demj and bifurcation types (Phil Wilson), "test" is "mandel"
  5032.     again
  5033.   <I>nversion command for most fractal types
  5034.   <Q>uaternary decomposition toggle and "DECOMP=" argument
  5035.   <E>ditor for Barnsley IFS parameters
  5036.   Command-line options for 3D parameters
  5037.   Spherical 3D calculations 5x faster
  5038.   3D now clips properly to screen edges and works at extreme
  5039.     perspective
  5040.   "RSEED=" argument for reproducible plasma clouds
  5041.   Faster plasma clouds (by 40% on a 386)
  5042.   Sensitivity to "continuous potential" algorithm for all types except
  5043.     plasma and IFS
  5044.   Palette-map <S>ave and Restore (<M>) commands
  5045.   <L>ogarithmic and <N>ormal palette-mapping commands and arguments
  5046.   Maxiter increased to 32,000 to support log palette maps
  5047.    .MAP and .IFS files can now reside anywhere along the DOS path
  5048.   Direct-video support for Hercules adapters (Dean Souleles)
  5049.   Tandy 1000 160x200x16 mode (Tom Price)
  5050.   320x400x256 register-compatible-VGA "tweaked" mode
  5051.   ATI VGA Wonder 1024x768x16 direct-video mode (Mark Peterson)
  5052.   1024x768x16 direct-video mode for all supported chipsets
  5053.   Tseng 640x400x256 mode
  5054.   "Roll-your-own" video mode 19
  5055.   New video-table "hot-keys" eliminate need for enhanced keyboard to
  5056.     access later entries
  5057.  
  5058.  
  5059.   Version 9.3, 8/89
  5060.  
  5061.   <P>rint command and "PRINTER=" argument (Matt Saucier)
  5062.   8514/A video modes (Kyle Powell)
  5063.   SSTOOLS.INI sensitivity and '@THISFILE' argument
  5064.   Continuous-potential algorithm for Mandelbrot/Julia sets
  5065.   Light source 3D option for all fractal types
  5066.   "Distance estimator" M/J method (Phil Wilson) implemented as "test"
  5067.     type
  5068.   LambdaCosine and LambdaExponent types
  5069.   Color cycling mode for 640x350x16 EGA adapters
  5070.   Plasma clouds for 16-color and 4-color video modes
  5071.   Improved TARGA support (Joe McLain)
  5072.  
  5073.  
  5074.                                        86
  5075.  
  5076.   CGA modes now use direct-video read/writes
  5077.   Tandy 1000 320x200x16 and 640x200x4 modes (Tom Price)
  5078.   TRIDENT chip-set super-VGA video modes (Lew Ramsey)
  5079.   Direct-access video modes for TRIDENT, Chips & Technologies, and ATI
  5080.     VGA WONDER adapters (John Bridges)... and, unlike version 9.1, they
  5081.     WORK in version 9.3!)
  5082.   "zoom-out" (<Ctrl><Enter>) command
  5083.   <D>os command for shelling out
  5084.   2/4/16-color Disk/RAM video mode capability and 2-color video modes
  5085.     supporting full-page printer graphics
  5086.   "INSIDE=-1" option (treated dynamically as "INSIDE=maxiter")
  5087.   Improved <H>elp and sound routines (even a "SOUND=off" argument)
  5088.   Turbo-C and TASM compatibility (really!  Would we lie to you?)
  5089.  
  5090.  
  5091.   Version 8.1, 6/89
  5092.  
  5093.   <3>D restore-from-disk and 3D <O>verlay commands, "3D=" argument
  5094.   Fast Newton algorithm including inversion option (Lee Crocker)
  5095.   16-bit Mandelbrot/Julia logic for 386-class speed with non-386 PCs on
  5096.     "large" images (Mark Peterson)
  5097.   Restore now loads .GIF files (as plasma clouds)
  5098.   TARGA video modes and color-map file options (Joe McLain)
  5099.   30 new color-cycling palette options (<Shft><F1> to <Alt><F10>)
  5100.   "Disk-video, RAM-video, EMS-video" modes
  5101.   Lambda sets now use integer math (with 80386 speedups)
  5102.   "WARN=yes" argument to prevent over-writing old .GIF files
  5103.  
  5104.  
  5105.   Version 7.0, 4/89
  5106.  
  5107.   Restore from disk (from prior save-to-disk using v. 7.0 or later)
  5108.   New types: Newton, Lambda, Mandelfp, Juliafp, Plasma, Lambdasine
  5109.   Many new color-cycling options (for VGA adapters only)
  5110.   New periodicity logic (Mark Peterson)
  5111.   Initial displays recognize (and use) symmetry
  5112.   Solid-guessing option (now the default)
  5113.   Context-sensitive <H>elp
  5114.   Customizable video mode configuration file (FRACTINT.CFG)
  5115.   "Batch mode" option
  5116.   Improved super-VGA support (with direct video read/writes)
  5117.   Non-standard 360 x 480 x 256 color mode on a STANDARD IBM VGA!
  5118.  
  5119.  
  5120.   Version 6.0, 2/89
  5121.  
  5122.   32-bit integer math emulated for non-386 processors; FRACT386 renamed
  5123.     FRACTINT
  5124.   More video modes
  5125.  
  5126.  
  5127.   Version 5.1, 1/89
  5128.  
  5129.   Save to disk
  5130.   New! Improved! (and Incompatible!) optional arguments format
  5131.  
  5132.  
  5133.                                        87
  5134.  
  5135.   "Correct" initial image aspect ratio
  5136.   More video modes
  5137.  
  5138.   Version 4.0, 12/88
  5139.  
  5140.   Mouse support (Mike Kaufman)
  5141.   Dynamic iteration limits
  5142.   Color cycling
  5143.   Dual-pass mode
  5144.   More video modes, including "tweaked" modes for IBM VGA and register-
  5145.     compatible adapters
  5146.  
  5147.  
  5148.   Version 3.1, 11/88
  5149.  
  5150.   Julia sets
  5151.  
  5152.  
  5153.   Version 2.1, 10/23/88 (the "debut" on CIS)
  5154.  
  5155.   Video table
  5156.   CPU type detector
  5157.  
  5158.  
  5159.   Version 2.0, 10/10/88
  5160.  
  5161.   Zoom and pan
  5162.  
  5163.  
  5164.   Version 1.0, 9/88
  5165.  
  5166.   The original, blindingly fast, 386-specific 32-bit integer algorithm
  5167.  
  5168.  
  5169.   APPENDIX D
  5170.  
  5171.                                  BIBLIOGRAPHY
  5172.  
  5173.   BARNSLEY, Michael: "Fractals Everywhere", Academic Press, 1988.
  5174.  
  5175.   DEWDNEY, A. K., "Computer Recreations" columns in "Scientific
  5176.     American" -- 8/85, 7/87, 11/87, 12/88, 7/89.
  5177.  
  5178.   FEDER, Jens: "Fractals", Plenum, 1988. Quite technical, with good coverage
  5179.       of applications in fluid percolation, game theory, and other areas.
  5180.  
  5181.   GLEICK, James: "Chaos: Making a New Science", Viking Press, 1987.
  5182.       The best non-technical account of the revolution in our
  5183.       understanding of dynamical systems and its connections with fractal
  5184.       geometry.
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.                                        88
  5193.  
  5194.   MANDELBROT, Benoit: "The Fractal Geometry of Nature", W. H. Freeman &
  5195.     Co., 1982.
  5196.       An even more revised and expanded version of the 1977 work. A rich
  5197.       and sometimes confusing stew of formal and informal mathematics,
  5198.       the prehistory of fractal geometry, and everything else. Best taken
  5199.       in small doses.
  5200.  
  5201.   MANDELBROT, Benoit: "Fractals: Form, Chance, and Dimension", W. H.
  5202.     Freeman & Co., 1977
  5203.       A much revised translation of "Les objets fractals: forme, hasard,
  5204.       et dimension," Flammarion, 1975.
  5205.  
  5206.   PEITGEN, Heinz-Otto & RICHTER, Peter: "The Beauty of Fractals,"
  5207.     Springer-Verlag, 1986.
  5208.       THE coffee-table book of fractal images, knowledgeable on computer
  5209.       graphics as well as the mathematics they portray.
  5210.  
  5211.   PEITGEN, Heinz-Otto & SAUPE, Ditmar: "The Science of Fractal Images,"
  5212.     Springer-Verlag, 1988.
  5213.       A fantastic work, with a few nice pictures, but mostly filled
  5214.       with *equations*!!!
  5215.  
  5216.  
  5217.  
  5218.  
  5219.   APPENDIX E
  5220.  
  5221.                             OTHER FRACTAL PROGRAMS
  5222.  
  5223.  
  5224.   (This section is new, and pathetically small because we added it at the
  5225.   last minute.  Please help us out, here...)
  5226.  
  5227.  
  5228.   FDESIGN, by Doug Nelson (CIS ID 70431,3374) - a freeware IFS fractal
  5229.     generator available from Compuserve in COMART Lib 15, and probably
  5230.     on your local BBS.  This program requires a VGA adapter and a Microsoft-
  5231.     compatible mouse, but it generates IFS fractals in a *much* more
  5232.     intuitive fashion than Fractint.  It can also (beginning with version
  5233.     3.0) save its IFS formulas in Fractint-style .IFS files.
  5234.  
  5235.  
  5236.   APPENDIX F
  5237.  
  5238.                      VERSION 13 TO VERSION 14 TYPE MAPPING
  5239.  
  5240.   A number of types in version 13 and earlier have been generalized in
  5241.   version 14. We have added a "backward compatibility" hook that (hopefully)
  5242.   automatically translates these to the new form when the old files are read.
  5243.   Files may be converted via:
  5244.  
  5245.      FRACTINT OLDFILE.FRA SAVENAME=NEWFILE.GIF BATCH=YES
  5246.  
  5247.   In a few cases the biomorph flag was incorrectly set in older files.  In
  5248.   that case, add "biomorph=no" to the command line.
  5249.  
  5250.  
  5251.                                        89
  5252.  
  5253.  
  5254.   This procedure can also be used to convert any *.fra file to the new GIF89a
  5255.   spec, which now allows storage of fractal information.
  5256.  
  5257.   TYPES CHANGED FROM VERSION 13 -
  5258.  
  5259.  
  5260.   V13 NAME                V14 NAME + PARAMETERS
  5261.   --------                --------------------------------------
  5262.   LOGMAP=YES              LOGMAP=OLD          for identical Logmap type
  5263.  
  5264.   DEMJ                    JULIA DISTEST=nnn
  5265.  
  5266.   DEMM                    MANDEL DISTEST=nnn
  5267.  
  5268.                           Note: DISTEST also available on many other fractals
  5269.  
  5270.   MANSINEXP               MANFN+EXP FUNCTION=SIN
  5271.  
  5272.                           Note: New functions for this type are
  5273.                                 cos sinh cosh exp log sqr
  5274.  
  5275.   JULSINEXP               JULFN+EXP FUNCTION=SIN
  5276.  
  5277.                           Note: New functions for this type are
  5278.                                 cos sinh cosh exp log sqr
  5279.  
  5280.   MANSINZSQRD             MANFN+ZSQRD FUNCTION=SQR/SIN
  5281.  
  5282.                           Note: New functions for this type are
  5283.                                 cos sinh cosh exp log sqr
  5284.  
  5285.   JULSINZSQRD             JULFN+ZSQRD FUNCTION=SQR/SIN
  5286.  
  5287.                           Note: New functions for this type are
  5288.                                 cos sinh cosh exp log sqr
  5289.  
  5290.   LAMBDACOS               LAMBDAFN FUNCTION=COS
  5291.  
  5292.   LAMBDACOSH              LAMBDAFN FUNCTION=COSH
  5293.  
  5294.   LAMBDAEXP               LAMBDAFN FUNCTION=EXP
  5295.  
  5296.   LAMBDASINE              LAMBDAFN FUNCTION=SIN
  5297.  
  5298.   LAMBDASINH              LAMBDAFN FUNCTION=SINH
  5299.  
  5300.                           Note: New functions for this type are
  5301.                                 log sqr
  5302.  
  5303.   MANDELCOS               MANDELFN FUNCTION=COS
  5304.  
  5305.   MANDELCOSH              MANDELFN FUNCTION=COSH
  5306.  
  5307.   MANDELEXP               MANDELFN FUNCTION=EXP
  5308.  
  5309.  
  5310.                                        90
  5311.  
  5312.  
  5313.   MANDELSINE              MANDELFN FUNCTION=SIN
  5314.  
  5315.   MANDELSINH              MANDELFN FUNCTION=SINH
  5316.  
  5317.                           Note: New functions for this type are
  5318.                                 log sqr
  5319.  
  5320.   MANDELLAMBDA            MANDELLAMBDA INITORBIT=PIXEL
  5321.  
  5322.   POPCORN SYMMETRY=NONE   POPCORNJUL
  5323.  
  5324.   -------------------------------------------------------------
  5325.   Formulas from FRACTINT.FRM in version 13
  5326.  
  5327.   MANDELGLASS             MANDELLAMBDA INITORBIT=.5/0
  5328.  
  5329.   INVMANDEL               V13 divide bug may cause some image differences.
  5330.  
  5331.   NEWTON4                 V13 divide bug may cause some image differences.
  5332.  
  5333.   SPIDER                  V13 divide bug may cause some image differences.
  5334.  
  5335.   MANDELSINE              MANDELFN FUNCTION=SIN BAILOUT=50
  5336.  
  5337.   MANDELCOSINE            MANDELFN FUNCTION=COS BAILOUT=50
  5338.  
  5339.   MANDELHYPSINE           MANDELFN FUNCTION=SINH BAILOUT=50
  5340.  
  5341.   MANDELHYPCOSINE         MANDELFN FUNCTION=COSH BAILOUT=50
  5342.  
  5343.   SCOTTSIN PARAMS=nnn     FN+FN FUNCTION=SIN/SQR BAILOUT=nnn+3
  5344.  
  5345.   SCOTTSINH PARAMS=nnn    FN+FN FUNCTION=SINH/SQR BAILOUT=nnn+3
  5346.  
  5347.   SCOTTCOS PARAMS=nnn     FN+FN FUNCTION=COS/SQR BAILOUT=nnn+3
  5348.  
  5349.   SCOTTCOSH PARAMS=nnn    FN+FN FUNCTION=COSH/SQR BAILOUT=nnn+3
  5350.  
  5351.   SCOTTLPC PARAMS=nnn     FN+FN FUNCTION=LOG/COS BAILOUT=nnn+3
  5352.  
  5353.   SCOTTLPS PARAMS=nnn     FN+FN FUNCTION=LOG/SIN BAILOUT=nnn+3
  5354.  
  5355.                           Note: New functions for this type are
  5356.                           sin/sin sin/cos sin/sinh sin/cosh sin/exp
  5357.                           cos/cos cos/sinh cos/cosh cos/exp
  5358.                           sinh/sinh sinh/cosh sinh/exp sinh/log
  5359.                           cosh/cosh cosh/exp cosh/log
  5360.                           exp/exp exp/log exp/sqr log/log log/sqr sqr/sqr
  5361.  
  5362.   SCOTTSZSA PARAMS=nnn    FN(Z*Z) FUNCTION=SIN BAILOUT=nnn+3
  5363.  
  5364.   SCOTTCZSA PARAMS=nnn    FN(Z*Z) FUNCTION=COS BAILOUT=nnn+3
  5365.  
  5366.                           Note: New functions for this type are
  5367.  
  5368.  
  5369.                                        91
  5370.  
  5371.                           sinh cosh exp log sqr
  5372.  
  5373.   SCOTTZSZZ PARAMS=nnn    FN*Z+Z FUNCTION=SIN BAILOUT=nnn+3
  5374.  
  5375.   SCOTTZCZZ PARAMS=nnn    FN*Z+Z FUNCTION=COS BAILOUT=nnn+3
  5376.  
  5377.                           Note: New functions for this type are
  5378.                           sinh cosh exp log sqr
  5379.  
  5380.   SCOTTSZSB PARAMS=nnn    FN*FN FUNCTION=SIN/SIN BAILOUT=nnn+3
  5381.  
  5382.   SCOTTCZSB PARAMS=nnn    FN*FN FUNCTION=COS/COS BAILOUT=nnn+3
  5383.  
  5384.   SCOTTLTS PARAMS=nnn     FN*FN FUNCTION=LOG/SIN BAILOUT=nnn+3
  5385.  
  5386.   SCOTTLTC PARAMS=nnn     FN*FN FUNCTION=LOG/COS BAILOUT=nnn+3
  5387.  
  5388.                           Note: New functions for this type are
  5389.                           sin/cos sin/sinh sin/cosh sin/exp sin/sqr
  5390.                           cos/sinh cos/cosh cos/exp cos/sqr
  5391.                           sinh/sinh sinh/cosh sinh/exp sinh/log sinh/sqr
  5392.                           cosh/cosh cosh/exp cosh/log cosh/sqr
  5393.                           exp/exp exp/log exp/sqr log/log log/sqr sqr/sqr
  5394.  
  5395.   SCOTTSIC PARAMS=nnn     SQR(1/FN) FUNCTION=COS BAILOUT=nnn+3
  5396.  
  5397.   SCOTTSIS PARAMS=nnn     SQR(1/FN) FUNCTION=SIN BAILOUT=nnn+3
  5398.  
  5399.   TETRATE PARAMS=nnn      TETRATE BAILOUT=nnn+3
  5400.  
  5401.                           Note: New function type sqr(1/fn) with
  5402.                                 sin cos sinh cosh exp log sqr
  5403.  
  5404.                           Note: New function type sqr(fn) with
  5405.                                 sin cos sinh cosh exp log sqr
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421.  
  5422.  
  5423.  
  5424.  
  5425.  
  5426.  
  5427.  
  5428.                                        92
  5429.